Случаи, когда импорт в Java не требуется (необычная квалификация) [Вопрос отредактирован] - PullRequest
3 голосов
/ 16 января 2011

Я заметил, что есть несколько специальных способов квалифицировать сущность в Java:

Object o = new Outer().new Inner();

В этом случае мы квалифицируем класс Inner классом Outer, поэтому нам нужно только импортировать класс Outer:

import mypackage.Outer;

Есть ли другие подобные случаи? (То есть, когда возникает необычная квалификация - под необычным я имею в виду не: fullQualifier.identifier).

Я исключаю случай автоматического импорта (java.lang, типы примитивов и т. Д.)

Ответы [ 3 ]

2 голосов
/ 16 января 2011

Я думаю, что вы неправильно понимаете конструкцию, которую вы описали:

Object o = new Outer().new Inner();

на самом деле полностью квалифицирует конструктор Inner class ', как и в

Outer.Inner i = new Outer().new Inner();

С другой стороны, вы могли бы написать это:

import path.to.Outer;
import path.to.Outer.Inner;

// ...

Inner i = new Outer().new Inner();
1 голос
/ 16 января 2011

Кроме того, вам не нужно импортировать класс, если:

  • вы используете полный путь к объекту. Например:

    java.util.Date d = new java.util.Date();
    
  • класс находится в той же упаковке

  • класс находится в пакете java.lang, например String
0 голосов
/ 16 января 2011

внешний пакет в этом случае включал внутренний пакет, поэтому нет необходимости импортировать внутренний пакет, в большинстве случаев нет необходимости импортировать весь пакет только для использования одного компонента. Например, я хочу толькочтобы использовать строку, нет необходимости импортировать весь файл java.lang.В некоторых сложных библиотеках, если вы используете некоторые IDE, они могут исправить импорт для вас, например, в netbeans ctrl + shift + i исправит ваш импорт

...