在工程下新建与库同包同名的类貌似是允许的,比如新建一个java.lang的包,下建一个叫String的类,然后工程下所有引用String的地方都指向自建的这个String了.
编译是优先在source文件夹里找然后再去java build path里找么?
还有办法引用JDK里的那个String么?另:不同source文件夹里同包同名类貌似会出错,不知道不同jar里出现同包同名类能不能导入到同一工程.
编译是优先在source文件夹里找然后再去java build path里找么?
还有办法引用JDK里的那个String么?另:不同source文件夹里同包同名类貌似会出错,不知道不同jar里出现同包同名类能不能导入到同一工程.
这样编译是可以通过的,但是不能运行的,系统的类加载器优先加载
系统中的包的。
比如一个project里可能出现好几个java.lang.String?
可是保存的位置是不同的啊。
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的,是相對于當前文件路徑的引用。所以不會出現職責不明的現象。
另外就是,如果與系統類沖突的話,系統類的優先級比較高。
因为在java中,有半编译边解义的过程,所以你先建一个 java.lang 包,再建 String 类这样虽然编译可以通过的,但是程序不能运行的,因为系统的类加载器优先加载 系统中的包的。