Случаи, когда импорт в Java не нужен (необычная квалификация) [Под редакцией вопрос

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

  •  11-10-2019
  •  | 
  •  

Вопрос

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

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

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

import mypackage.Outer;

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

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

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

Решение

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

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

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

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

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

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

// ...

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

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

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

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

    java.util.Date d = new java.util.Date();
    
  • Класс в том же пакете

  • класс в java.lang упаковка, например String

Внешний пакет в этом случае включал внутренний пакет, поэтому не было необходимости импортировать внутренний пакет, в большинстве случаев нет необходимости импортировать целый пакет, чтобы использовать один компонент. Например, я хочу использовать только Строка, нет необходимости импортировать всю java.lang. В некоторых сложных библиотеках использование, если вы используете некоторые идентификаторы, они могут исправить импорт для вас, например, в Netbeans Ctrl+Shift+Я исправим ваш импорт

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