Java 解决包冲突
假设我们有一个名为Java 解决包冲突,java,packages,Java,Packages,假设我们有一个名为com.example1的包,其中包含一个Hello类(以及其他类) 然后我们有另一个包com.example2也包含Hello类(显然行为不同) 现在假设我们需要com.example1中的每个类和com.example2中的Hello类 import com.example1.*; import com.example2.Hello; 在这种情况下,哪一个会被呼叫 Hello hello = new Hello(); 或者这会导致编译错误 这只是出于好奇而提出的一个理论
com.example1
的包,其中包含一个Hello
类(以及其他类)
然后我们有另一个包com.example2
也包含Hello
类(显然行为不同)
现在假设我们需要com.example1中的每个类和com.example2中的Hello类
import com.example1.*;
import com.example2.Hello;
在这种情况下,哪一个会被呼叫
Hello hello = new Hello();
或者这会导致编译错误
这只是出于好奇而提出的一个理论问题
由于创建包是为了避免命名冲突,因此当两个包包含两个同名类时会发生什么情况?它将给出一个编译错误。您必须显式命名该类-
com.example2.Hello Hello=new com.example2.Hello()代码>它将给出一个编译错误。您必须显式命名该类-com.example2.Hello Hello=new com.example2.Hello()代码>最好在声明中明确,而不是让它随机应变。这是一个编译错误
类似的冲突通常发生在java.util.List
和java.awt.List
上。如果您是显式的,就不会产生混淆。最好在声明中显式,而不是将其留给偶然的机会。这是一个编译错误
类似的冲突通常发生在java.util.List
和java.awt.List
上。如果您是显式的,则不会出现混淆。它不会给出其他用户所述的编译器错误。它将使用com.example2.Hello。这是因为显式导入(com.example2.Hello)总是比*导入(com.example1.*)具有优先级 它不会像其他用户所说的那样给出编译器错误。它将使用com.example2.Hello。这是因为显式导入(com.example2.Hello)总是比*导入(com.example1.*)具有优先级 @klez-Yeah,但是为了清晰起见,您可以保留导入-只是为了从java
文件顶部导入类的位置可见。@klez-Yeah,但是为了清晰起见,您可以保留导入内容-只是为了从java
文件顶部导入类的位置可见。java.awt.List冲突让我沮丧,以至于无法将其从本地开发JRE中删除。java.awt.List冲突让我沮丧,以至于无法将其从本地开发JRE中删除。