對package的理解

來源:互聯網
上載者:User

        初學java的時候對它的包機制總是懵懵懂懂的,也經常因為對包的理解不當而出現一些莫名其妙的錯誤,下面簡單總結一下偶在java學習過程中對於包的理解和認識.,不當之處,還請指正.

        首先,建立目錄D:/Test,在下面建立一個很簡單的java檔案,First.java;

package zhukai;

/**
 this is a test
 @author zhukai
 @version 1.1
*/

public class First{
    /** static mothod
     @param args an array   
*/
    public static void main(String args[]){
        System.out.println("Test");
                                          }
                  }

編譯之D:/Test>javac First.java

運行D:/Test>java  First,不出意外的話會出現如下的錯誤:

Exception in thread "main"java.lang.NoClassDefFoundError: First (wrong name: zhukai/First),解決辦法如下:在Test目錄下面建立目錄zhukai,然後把剛才產生的class檔案移過去,運行D:/Test>java  zhukai.First,運行成功,輸出"Test".(注意:這個時候即使你進入/zhukai運行java  First也會報錯).當然你也可以使用javac的-d參數來自動產生package目錄,兩種方法的效果是一樣的.

        這時可能就有人要問了,不要那個package不就得了,省的這麼麻煩.我們首先看這樣一種情況,在一個BBS的web應用程式中,經常涉及到刪除文章的操作,而不的角色所擁有的權利是不一樣的.比如說,普通使用者只能刪除自己的文章,而斑竹則可以刪除該版面上的任何一個文章.對於編寫javabean的程式員而言,可能傾向於把執行這兩個操作的java檔案都明明為delete.java,這個時候就會出現明明衝突的問題,而這也是為什麼會出現package的原因了.package出現的初衷就是為了保證類名的唯一性.在上面的情況中,我們就可以寫一個admin.delete和一個user.delete來避免命名的衝突.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.