Spec-Zone .ru
спецификации, руководства, описания, API
|
С программистами, во всем мире пишущими классы и интерфейсы, используя язык программирования Java, вероятно, что много программистов будут использовать то же самое имя для различных типов. Фактически, предыдущий пример делает только что: Это определяет a Rectangle
class, когда уже есть a Rectangle
class в java.awt
пакет. Однако, компилятор позволяет обоим классам иметь то же самое имя, если они находятся в различных пакетах. Полностью определенное имя каждого Rectangle
class включает имя пакета. Таким образом, полностью определенное имя Rectangle
class в graphics
пакет graphics.Rectangle
, и полностью определенное имя Rectangle
class в java.awt
пакет java.awt.Rectangle
.
Это работает хорошо, если два независимых программиста не используют то же самое имя для своих пакетов. Что предотвращает эту проблему? Соглашение.
Имена пакета написаны во всем нижнем регистре, чтобы избежать конфликта с именами классов или интерфейсов.
Компании используют свое инвертированное имя Интернет-домена, чтобы начать их имена пакета — например, com.example.mypackage
для названного пакета mypackage
создаваемый программистом в example.com
.
Коллизии имени, которые происходят в пределах единственной компании, должны быть обработаны условно в пределах той компании, возможно включением области или названия проекта после названия компании (например, com.example.region.mypackage
).
Пакеты на языке самого Java начинаются java.
или javax.
В некоторых случаях имя интернет-домена, возможно, не допустимое имя пакета. Это может произойти, если доменное имя содержит дефис или другой специальный символ, если имя пакета начинается с цифры или другого символа, который недопустим, чтобы использовать в качестве начала имени Java, или если имя пакета содержит зарезервированное ключевое слово Java, такое как "интервал". В этом случае предложенное соглашение состоит в том, чтобы добавить подчеркивание. Например:
Доменное имя | Префикс Имени пакета |
---|---|
hyphenated-name.example.org |
org.example.hyphenated_name |
example.int |
int_.example |
123name.example.com |
com.example._123name |