Что значит & ldquo; статический & rdquo; модификатор после & ldquo; import & rdquo; имею в виду?

Вот простой способ для перебора лишнего заголовка включает . Это не идеально, но устраняет «очевидные» ненужные включения.

Доступ к скриптам можно получить непосредственно в GitHub.

424
задан ROMANIA_engineer 19 May 2015 в 11:21
поделиться

4 ответа

См. Документация

, статическое объявление импорта походит на нормальное объявление импорта. Куда нормальное объявление импорта импортирует классы из пакетов, позволяя им использоваться без квалификации пакета, статическое объявление импорта импортирует статических участников из классов, позволяя им использоваться без квалификации класса.

Поэтому, когда необходимо использовать статический импорт? Очень экономно! Только используйте его, когда Вы иначе испытали бы желание объявить локальные копии констант или злоупотребить наследованием (Постоянный Интерфейсный Антишаблон). Другими словами, используйте его при требовании частого доступа к статическим участникам от одного или двух классов. При злоупотреблении статической функции импорта она может сделать программу нечитабельной и неудобной в сопровождении, загрязнив ее пространство имен всеми статическими участниками, которых Вы импортируете. Читатели Вашего кода (включая Вас, спустя несколько месяцев после записи его) не будут знать, которые классифицируют статического участника, прибывает из. Импорт всех статических участников от класса может быть особенно вреден для удобочитаемости; если Вы нуждаетесь только в одном или двух участниках, импортируете их индивидуально. Используемый соответственно, статический импорт может сделать Вашу программу более читаемой путем удаления шаблона повторения имен классов.

376
ответ дан RevanthKrishnaKumar V. 19 May 2015 в 11:21
поделиться

Нет никакого различия между теми двумя импортом, который Вы заявляете. Можно, однако, использовать статический импорт, чтобы предоставить дисквалифицированный доступ статическим членам других классов. Где я раньше делал это:

import org.apache.commons.lang.StringUtils;
      .
      .
      .
if (StringUtils.isBlank(aString)) {
      .
      .
      .

я могу сделать это:

import static org.apache.commons.lang.StringUtils.isBlank;
      .
      .
      .
if (isBlank(aString)) {
      .
      .
      .

Вы видите больше в документация .

218
ответ дан Victor 19 May 2015 в 11:21
поделиться

Статический импорт используется для импорта статических полей / метод класса вместо:

package test;

import org.example.Foo;

class A {

 B b = Foo.B_INSTANCE;

}

можно записать:

package test;

import static org.example.Foo.B_INSTANCE;

class A {

 B b = B_INSTANCE;

}

полезно, если Вы часто используетесь константа от другого класса в Вашем коде и если статический импорт не неоднозначен.

Btw, в Вашем примере "импортируют статический org.example. Myclass"; не будет работать: импорт для класса, статичный импорт для статических членов класса.

57
ответ дан Nicolas 19 May 2015 в 11:21
поделиться

разница между "import static com.showboy.Myclass" и "import com.showboy.Myclass"?

Первый должен генерировать ошибку компилятора, поскольку статический импорт работает только для импорта поля или типы членов. (при условии, что MyClass не является внутренним классом или членом из showboy)

Я думаю, вы имели в виду

import static com.showboy.MyClass.*;

, который делает все статические поля и члены из MyClass доступными в фактическом модуле компиляции без необходимости их квалификации ... как объяснено выше

24
ответ дан 22 November 2019 в 23:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: