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