Есть ли в Java ограничение на импорт класса с именем ClassX внутри класса с тем же именем? - PullRequest
2 голосов
/ 13 июня 2011

Если у меня есть имена классов ClassX в пакете abc, и я хочу импортировать класс abxClassX

Есть ли какие-то ограничения в 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();
    }
}

Если нет, то почему?

Ответы [ 2 ]

3 голосов
/ 13 июня 2011

Нельзя импортировать классы с одинаковыми, потому что это вызывает конфликты имен.Вы должны использовать полностью определенные имена, такие как;

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..   
}

Давайте проиллюстрируем, импортируем ли мы класс B из пакета a;

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

}
1 голос
/ 13 июня 2011

Я думаю, что нет, но вместо a.b.c.Classx newObj = a.b.c.ClassX() напишите a.b.c.ClassX newObj = a.b.c.ClassX() (Class_X_, нет Class_x_), и оно должно работать: -)

...