В Java есть ли ограничение на импорт класса с именем Classx внутри класса с тем же именем?

StackOverflow https://stackoverflow.com/questions/6328237

  •  27-10-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

}

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top