Spec-Zone .ru
спецификации, руководства, описания, API
|
double r = Math.cos(Math.PI * theta);Чтобы обойти это, люди иногда помещаемые статические элементы в интерфейс и наследоваться от того интерфейса. Это - плохая идея. Фактически, это - такая плохая идея, что есть имя для этого: Постоянный Антиобразец Интерфейса (см.
Статическая конструкция импорта предоставляет неполный доступ к статическим элементам, не наследовавшись от типа, содержащего статические элементы. Вместо этого программа импортирует элементы, любой индивидуально:
import static java.lang.Math.PI;или в массе:
import static java.lang.Math.*;Как только статические элементы были импортированы, они могут использоваться без квалификации:
double r = cos(PI * theta);Статическое объявление импорта походит на нормальное объявление импорта. Куда нормальное объявление импорта импортирует классы из пакетов, позволяя им использоваться без квалификации пакета, статическое объявление импорта импортирует статические элементы из классов, позволяя им использоваться без квалификации class.
Так, когда следует использовать статический импорт? Очень экономно! Только используйте это, когда Вы иначе испытали бы желание объявить локальные копии констант, или злоупотребить наследованием (Постоянный Антиобразец Интерфейса). Другими словами используйте это, когда Вы требуете частого доступа к статическим элементам от одного или двух классов. Если Вы злоупотребляете статическую функцию импорта, она может сделать Вашу программу нечитабельной и неудобной в сопровождении, загрязняя ее пространство имен со всеми статическими элементами, которые Вы импортируете. Читатели Вашего кода (включая Вас, спустя несколько месяцев после того, как Вы записали это) не будут знать, из которого class прибывает статический элемент. Импорт всех статических элементов от class может быть особенно вредным для удобочитаемости; если Вы нуждаетесь только в одном или двух элементах, импортируете их индивидуально. Используемый соответственно, статический импорт может сделать Вашу программу более читаемой, удаляя шаблон повторения имен class.