在工程下新建与库同包同名的类貌似是允许的,比如新建一个java.lang的包,下建一个叫String的类,然后工程下所有引用String的地方都指向自建的这个String了.
编译是优先在source文件夹里找然后再去java build path里找么?
还有办法引用JDK里的那个String么?另:不同source文件夹里同包同名类貌似会出错,不知道不同jar里出现同包同名类能不能导入到同一工程.

解决方案 »

  1.   

    要用JDK里的String 类就在类前加上java.lang.String导入应该是能导入,不过用的时候就要区分一下了.
      

  2.   

    不可能的吧,你在工程中建一个 java.lang 包,再建 String 类,
    这样编译是可以通过的,但是不能运行的,系统的类加载器优先加载
    系统中的包的。
      

  3.   

    包+类名,对于一个project来说,有可能出现重复的?并不能作为类的一个唯一标识
    比如一个project里可能出现好几个java.lang.String?
      

  4.   

    即使出現相同package的同名java文件
    可是保存的位置是不同的啊。
    package其實就是一個相對路徑
    在同一個目錄下可以作為類的唯一表示
    你在同一個目錄下保存同名同類文件,Windows也不能允許啊。譬如:
    【C:\hello.java】   package是【com.fsolsh.common】
    【C:\hello\hello.java】   package也是【com.fsolsh.common】
    那么編譯后,class文件保存的路徑分別是【C:\com\fsolsh\common】和【C:\hello\com\fsolsh\common】
    而你引用的時候,是先需要import的,是相對于當前文件路徑的引用。所以不會出現職責不明的現象。
    另外就是,如果與系統類沖突的話,系統類的優先級比較高。
      

  5.   

    多谢楼上的大大,还有就是如果新建了java.lang.String类,还有办法引用JDK里带的那个String么,我看所有的String都指向自定义那个了
      

  6.   

    好像就是一个projec下多个src文件夹和lib下的jar里,都可能出现同包名同类名的情况,有点迷糊JAVA会 如何来区别
      

  7.   

    试了下,同一project下多个src文件夹下,同包名同类名会出错,但src和jar里重复不会提示,而且貌似以src里的优先
      

  8.   


    因为在java中,有半编译边解义的过程,所以你先建一个 java.lang 包,再建 String 类这样虽然编译可以通过的,但是程序不能运行的,因为系统的类加载器优先加载 系统中的包的。