问题描述
|
如果我在a.b.c包中有一个名为ClassX的类,并且我想导入该类a.b.x.ClassX
Java中是否有一些限制阻止我这样做?就用法而言,我始终可以使用导入类的完全限定名称,对吗?
Eclipse似乎无法解决此导入问题,我需要知道Java本身是否存在导致问题的限制。
以下代码是否合法:
a \\ b \\ c \\ ClassX.java:
package a.b.c;
public class ClassX {
//
}
a \\ b \\ x \\ ClassX.java:
package a.b.x;
import a.b.c.ClassX;
public class ClassX {
public static void main(String[] args) {
a.b.c.ClassX newObj = new a.b.c.ClassX();
}
}
如果没有,那为什么呢?
解决方法
您不能导入相同的类,因为这会导致名称冲突。您必须使用完全限定的名称,例如;
package a;
class B{}
package b;
class B{
a.B objectPackageaB;
b.B objectPackagebB;
B objectB; // it is legal,it maps to b.B. but if you import class B from package a,then it would be illegal..
}
让我们来说明是否从包a中导入类B;
package b;
import a.B;
class B {
B objectB ; // illegal.. which B,package a or package b..
b.B objectbB; //legal
a.B objectaB; //legal
}
, 我认为没有,但是要代替a.b.c.Classx newObj = a.b.c.ClassX()
,而是写a.b.c.ClassX newObj = a.b.c.ClassX()
(Class_X_,否Class_x_),它应该可以工作:-)