Вот простой способ для перебора лишнего заголовка включает . Это не идеально, но устраняет «очевидные» ненужные включения.
См. Документация
, статическое объявление импорта походит на нормальное объявление импорта. Куда нормальное объявление импорта импортирует классы из пакетов, позволяя им использоваться без квалификации пакета, статическое объявление импорта импортирует статических участников из классов, позволяя им использоваться без квалификации класса.
Поэтому, когда необходимо использовать статический импорт? Очень экономно! Только используйте его, когда Вы иначе испытали бы желание объявить локальные копии констант или злоупотребить наследованием (Постоянный Интерфейсный Антишаблон). Другими словами, используйте его при требовании частого доступа к статическим участникам от одного или двух классов. При злоупотреблении статической функции импорта она может сделать программу нечитабельной и неудобной в сопровождении, загрязнив ее пространство имен всеми статическими участниками, которых Вы импортируете. Читатели Вашего кода (включая Вас, спустя несколько месяцев после записи его) не будут знать, которые классифицируют статического участника, прибывает из. Импорт всех статических участников от класса может быть особенно вреден для удобочитаемости; если Вы нуждаетесь только в одном или двух участниках, импортируете их индивидуально. Используемый соответственно, статический импорт может сделать Вашу программу более читаемой путем удаления шаблона повторения имен классов.
Нет никакого различия между теми двумя импортом, который Вы заявляете. Можно, однако, использовать статический импорт, чтобы предоставить дисквалифицированный доступ статическим членам других классов. Где я раньше делал это:
import org.apache.commons.lang.StringUtils;
.
.
.
if (StringUtils.isBlank(aString)) {
.
.
.
я могу сделать это:
import static org.apache.commons.lang.StringUtils.isBlank;
.
.
.
if (isBlank(aString)) {
.
.
.
Вы видите больше в документация .
Статический импорт используется для импорта статических полей / метод класса вместо:
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"; не будет работать: импорт для класса, статичный импорт для статических членов класса.
разница между "import static com.showboy.Myclass" и "import com.showboy.Myclass"?
Первый должен генерировать ошибку компилятора, поскольку статический импорт работает только для импорта поля или типы членов. (при условии, что MyClass не является внутренним классом или членом из showboy)
Я думаю, вы имели в виду
import static com.showboy.MyClass.*;
, который делает все статические поля и члены из MyClass доступными в фактическом модуле компиляции без необходимости их квалификации ... как объяснено выше