Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Пакет Java , организует Java классов в пространства имен , [1] обеспечивает уникальное пространство имен для каждого типа она содержит. Классы в одном пакете могут обращаться к частным и защищенным членам пакета друг друга.

В общем, пакет может содержать следующие типы типов : классы, интерфейсы , перечисления и типы аннотаций . Пакет позволяет разработчику группировать классы (и интерфейсы) вместе. Все эти классы будут каким-то образом связаны - все они могут иметь отношение к определенному приложению или выполнять определенный набор задач. Программисты также обычно используют пакеты для организации классов, принадлежащих к одной категории или обеспечивающих аналогичные функции.

Использование пакетов [ править ]

В исходном файле Java пакет, к которому принадлежат класс или классы этого файла, указывается с помощью package ключевого слова . Это ключевое слово обычно является первым ключевым словом в исходном файле. В исходном файле может появиться не более одного объявления пакета.

пакет  java.awt.event ;

Чтобы использовать классы пакета внутри исходного файла Java, удобно импортировать классы из пакета с importобъявлением. Следующее заявление

import  java.awt.event. * ;

импортирует все классы из java.awt.eventпакета, а следующее объявление

import  java.awt.event.ActionEvent ;

импортирует только ActionEventкласс из пакета. После любого из этих объявлений импорта на ActionEventкласс можно ссылаться, используя его простое имя класса:

ActionEvent  myEvent  =  новое  ActionEvent ();

Классы также можно использовать напрямую без объявления импорта, используя полное имя класса. Например,

java . awt . событие . ActionEvent  myEvent  =  новый  java . awt . событие . ActionEvent ();

не требует предшествующей декларации импорта.

Документация и аннотации для всего пакета [ править ]

Документация, объясняющая пакет в целом, написана как Javadoc в файле с именем `package-info.java`. Этот файл также является местом для аннотаций, которые будут использоваться во всех классах пакета. См. Спецификацию языка Java .

Безымянный пакет [ править ]

Если объявление пакета не используется, классы помещаются в безымянный пакет. Классы в безымянном пакете не могут быть импортированы классами в любом другом пакете. [2] Официальный учебник по Java не рекомендует этого:

Вообще говоря, безымянный пакет предназначен только для небольших или временных приложений или когда вы только начинаете процесс разработки. В противном случае классы и интерфейсы принадлежат именованным пакетам. [3]

Защита доступа к пакету [ править ]

Открытые члены и классы видны повсюду, а частные члены видны только в том же классе. Классы в пакете могут получать доступ к классам и членам, объявленным с доступом по умолчанию ( частным для пакета ), а также к членам класса, объявленным с protectedмодификатором доступа. Доступ по умолчанию (частный для пакета) применяется, если класс или член не были объявлены как public, protectedили private. Напротив, классы в других пакетах не могут получить доступ к классам и членам, объявленным с доступом по умолчанию. Однако к членам класса, объявленным как, protectedможно получить доступ из классов в том же пакете, а также из классов в других пакетах, которые являются подклассами объявленного класса. [4]

Создание файлов JAR [ править ]

Файлы JAR создаются с помощью утилиты командной строки jar. Команда

jar cf myPackage.jar * .class

сжимает все файлы .class в файл JAR myPackage.jar . Параметр «c» в командной строке указывает команде jar «создать новый архив». Параметр «f» указывает ему создать файл. Имя файла следует перед содержимым файла JAR.

Соглашения об именах пакетов [ править ]

Пакеты обычно определяются с использованием иерархического шаблона именования , при этом некоторые уровни иерархии разделяются .точками ( произносится как «точка»). Хотя пакеты, расположенные ниже в иерархии имен, часто называют «подпакетами» соответствующих пакетов выше в иерархии, между пакетами почти нет семантических отношений. Спецификация языка Java устанавливает соглашения об именах пакетов, чтобы избежать возможности того, что два опубликованных пакета будут иметь одно и то же имя. Соглашения об именах описывают, как создавать уникальные имена пакетов, чтобы широко распространенные пакеты имели уникальные пространства имен. Это позволяет легко и автоматически устанавливать и каталогизировать пакеты по отдельности.

Как правило, имя пакета начинается с доменного имени верхнего уровня организации, затем домена организации, а затем любых поддоменов, перечисленных в обратном порядке. Затем организация может выбрать конкретное имя для своего пакета. Последующие компоненты имени пакета различаются в соответствии с внутренними соглашениями об именах организации. [5]

Например, если организация MySoft в Канаде создает пакет для работы с дробями, наименование пакета ca.mysoft.fractions отличает пакет дробей от другого аналогичного пакета, созданного другой компанией. Если немецкая компания MySoft также создает пакет фракций, но называет его de.mysoft.fractions , то классы в этих двух пакетах определяются в уникальном и отдельном пространстве имен.

Полные соглашения по устранению неоднозначности имен пакетов и правила именования пакетов, когда имя домена в Интернете не может использоваться напрямую в качестве имени пакета, описаны в разделе 7.7 Спецификации языка Java. [6]

Основные пакеты в Java SE 8 [ править ]

Пакет java.lang доступен без использования оператора импорта.

Модули [ править ]

В Java 9 «модули», своего рода набор пакетов, планируются как часть Project Jigsaw; раньше они назывались «суперпакетами» и изначально планировались для Java 7.

Модули будут описывать свои зависимости в объявлении модуля, которое будет помещено в файл с именем module-info.java в корне иерархии исходных файлов модуля. JDK сможет проверить их как во время компиляции, так и во время выполнения. Сам JDK будет модульным для Java 9 . [7]

Ссылки [ править ]

  1. ^ Джеймс Гослинг, Билл Джой, Гай Стил, Гилад Браха, Спецификация языка Java, третье издание , ISBN  0-321-24678-0 , 2005. Во введении говорится: «Глава 7 описывает структуру программы, которая организован в пакеты, аналогичные модулям Modula ».
  2. ^ «Глава 7. Пакеты» . Docs.oracle.com . Проверено 15 сентября 2013 .
  3. ^ [1]
  4. ^ http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
  5. ^ Соглашения по коду для языка программирования Java: 9. Соглашения об именах
  6. ^ http://docs.oracle.com/javase/specs/jls/se6/html/packages.html#7.7
  7. ^ "Сводка модуля JDK" . Корпорация Oracle . 2015-10-23 . Проверено 29 ноября 2015 .

Внешние ссылки [ править ]

  • Документация Java SE 10 API Javadocs