大家。我有一个Java Eclipse项目。它包含许多包,类名可以与包相同,如:
org.a
a.java <--------- this class is org.a.a
b.java
org.b
a.java
org.a.a <---------- this package is also org.a.a
a.java
b.java
编译项目时,Eclipse报告错误:类型&#34; xxx&#34;与包裹发生碰撞。那么是否有支持相同包和类名的Java IDE?或者有没有办法可以在Eclipse中编译它?
答案 0 :(得分:1)
简短的回答是否定的,如果您在具有相同名称的不同包中有类,则需要使用它们的绝对名称(package.name)在代码中引用它们,这就是拥有包名称空间的要点。
因此,在您的代码中,您需要明确使用org.a.a
和org.a.a.a
,而不是使用import
语句......
例如......
org.a.a a1 = new org.a.a();
org.a.a.a a2 = new org.a.a.a();
答案 1 :(得分:1)
这不是Eclipse问题,而是Java功能。
The Java Language Specification makes the following restrictions
软件包的成员是子包以及所有顶级 类类型(§7.6,§8(类))和顶级接口类型(§9 (接口))在所有编译单元(第7.3节)中声明 封装
和
包可能不包含两个同名的成员,或者a 编译时错误结果。
在您的示例中,org.a
是一个包。您希望它有两个成员:类型org.a.a
和包org.a.a
。 Java语言不允许这样做。
Java约定声明您的包名称应以小写字母开头,而类型名称应以大写字母开头。如果遵循这些惯例,就不会出现这样的问题。