【求助】JAVA基础的一个小问题

jiezi506 2007-10-16 03:51:37
在工程下新建与库同包同名的类貌似是允许的,比如新建一个java.lang的包,下建一个叫String的类,然后工程下所有引用String的地方都指向自建的这个String了.
编译是优先在source文件夹里找然后再去java build path里找么?
还有办法引用JDK里的那个String么?

另:不同source文件夹里同包同名类貌似会出错,不知道不同jar里出现同包同名类能不能导入到同一工程.
...全文
278 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yibutonghua 2007-10-22
  • 打赏
  • 举报
回复

因为在java中,有半编译边解义的过程,所以你先建一个 java.lang 包,再建 String 类

这样虽然编译可以通过的,但是程序不能运行的,因为系统的类加载器优先加载

系统中的包的。
jiezi506 2007-10-17
  • 打赏
  • 举报
回复
试了下,同一project下多个src文件夹下,同包名同类名会出错,但src和jar里重复不会提示,而且貌似以src里的优先
jiezi506 2007-10-17
  • 打赏
  • 举报
回复
好像就是一个projec下多个src文件夹和lib下的jar里,都可能出现同包名同类名的情况,有点迷糊JAVA会 如何来区别
jiezi506 2007-10-17
  • 打赏
  • 举报
回复
多谢楼上的大大,还有就是如果新建了java.lang.String类,还有办法引用JDK里带的那个String么,我看所有的String都指向自定义那个了
fsolsh 2007-10-17
  • 打赏
  • 举报
回复
即使出現相同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的,是相對于當前文件路徑的引用。所以不會出現職責不明的現象。
另外就是,如果與系統類沖突的話,系統類的優先級比較高。
jiezi506 2007-10-17
  • 打赏
  • 举报
回复
包+类名,对于一个project来说,有可能出现重复的?并不能作为类的一个唯一标识
比如一个project里可能出现好几个java.lang.String?
  • 打赏
  • 举报
回复
不可能的吧,你在工程中建一个 java.lang 包,再建 String 类,
这样编译是可以通过的,但是不能运行的,系统的类加载器优先加载
系统中的包的。
yuyu622 2007-10-17
  • 打赏
  • 举报
回复
要用JDK里的String 类就在类前加上java.lang.String

导入应该是能导入,不过用的时候就要区分一下了.

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧