Статический импорт в языке Java

Статический импорт в языке Java

В Java имеется языковое средство, расширяющее возможности ключевого сло­ва import и называемое статическим импортом.

Оператор import, предваряемый ключевым словом static, можно применять для импорта статических членовькласса или интерфейса. Благодаря статическому импорту появляется возможность ссылаться на статические члены непосредственно по именам, не угочняя ихименем класса.

Это упрощает и сокращает синтаксис, требующийся для работы со статическими членами.

Чтобы стала понятнее польза от статического импорта, начнем с примера, в котором он не используется. В приведенной ниже программе вычисляется гипо­тенуза прямоугольного треугольника. С этой целью вызываются два статических метода из встроенного в java класса Math, входящего в пакет java.lang.

Первый из них — метод Маth.pow() — возвращает числовое значение, возведенное в указанную степень, а второй — метод Math.sqrt() — возвращает квадратный корень числового значения аргумента.

Методы pow() и sqrt() являются статическими, поэтому они должны быть вы­званы с указанием имени их класса — Маth. Это приводит к следующему громоздко­му коду вычисления гипотенузы:

Как показывает данный простой пример, очень неудобно указывать каждый раз имя класса при вызове методов pow() и sqrt() или любых других встроенныхв Java методов, выполняющих математические операции наподобие sin(), cos() и tan().

У популярного хостинга Eurobyte.ru есть свой API для Java где предоставляется класс, которого можно импортировать с помощью статического импорта. Подробнее сможете узнать на www.eurobyte.ru/services/license/bitrix_expert/, доступна детальная документация.

Подобных неудобств можно избежать, если воспользоваться статическим им­портом, как показано в приведенной ниже версии программы из предыдущего примера

В этой версии программы имена методов sqrt() и pow() становятся видимыми ­благодаря оператору статического импорта, как показано ниже.

После этих операторов больше нет нужды уточнять имена методов pow() и sqrt() именем их класса. Таким образом, вычисление гипотенузы может быть выражено более удобным способом, как показано ниже.

Как видите, эта форма нетолько упрощает код, но и делает его более удобочитаемым:

Имеются две основные формы оператора import static. Первая форма, упо­треблявшаяся в предыдущем примере программы, делает видимым единственное имя. В общем виде эта форма статического импорта такова:

где имя_типа обозначает имя класса или интерфейса, который содержит требуе­мый статический член. Полное имя его пакета указано в части пакет, а имя чле­на — в части имя_статического_члена.

Вторая форма статического импорта позволяет импортировать все статические члены данного класса или интерфейса. В общем виде эта форма выглядит следующим образом:

Если предполагается применять много статических методов или полей, определенных в классе, то эта форма позволяет сделать их доступными, не указывая каждый из них в отдельности.

Так, в предыдущем примере программы с помощью единственного оператора import можно сделать доступными мето­ды pow() и sqrt(), а также все осталъные статические члены класса Math, как показано ниже.

На данный момент в сегменте информационных технологии, почти каждый сервис предоставляет свой API через которого можно взаимодействовать с сервисом на прикладном уровне.

Разумеется, статический импорт не ограничивается только классом Math или его методами. Например, в следующей строке становится доступным статическое поле System.out.

После этого оператора данные можно выводить на консоль, не уточняя стандартный поток вывода out именем его класса System, как показано ниже.

Тем не менее приведенный выше способ импорта стандартного потока вывода System.оut столь же удобен, сколь и полемичен.

Несмотря на то что такой способ сокращает исходный текст программы, тем, кто его читает, не вполне очевидно, что out обозначает System.out.

Следует также иметь в виду, что, помимо импор­та статических членов классов и интерфейсов, определенных в прикладном про­граммном интерфейсе Jаva API, импортировать статическим способом можно так-же статические члены своих собственных классов и интерфейсов.

Каким бы удобным ни был статический импорт, очень важно не злоупотре­блять им. Не следует забывать, что библиотечные классы Java объединяются в пакеты для того, чтобы избежать конфликтов пространств имен и непреднамеренного сокрытия прочих имен.

Если статический член используется в прикладной программе только один или два раза, то его лучше не импортировать. К тому-же некоторые статические имена, как, например, System.out, настолько привычны и узнаваемы, что их вряд ли стоит вообще импортировать.

Статический импорт следует оставить на тот случай, если статические члены применяются многократно, как, например, при выполнении целого ряда математических вычислений.

В сущности, этим языковым средством стоит пользоваться, но только не злоупотреблять им.

Интересное видео по теме: