2016-03-04 2 views
0

Я портирую apitest на jogl, один из каталогов называется Null, поэтому я просто пытался использовать null в качестве имени пакета, а Netbeans жалуется, что он недействителен.Java, почему мы не можем использовать null как имя пакета?

Я знаю, что расщепление волос, но я просто любопытно .. я не нашел ничего здесь или на гугле ..

ли это делать с отражением, именем ВОССТАНОВЛЕНИЕ, что-то подобное или что-то другое? Или это как это по дизайну, то же, что и перегрузка оператора?

Edit: Я знаю, что это зарезервированное слово, но в коде ..

+2

Рассмотрите вопрос о статусе 'null.TheClass', как должен Java знать, что вы имеете в виду null как пакет? – RAnders00

+0

Правильно, это имеет смысл – elect

ответ

3

Идентификатор не может быть назван null как language specification упоминает:

Идентификатор не может иметь одинаковое написание (символ Unicode последовательность) в качестве ключевого слова (§3.9), булевой литерал (§3.10.3), или нулевой литерал (§3.10.7), или возникает ошибка времени компиляции.

+0

Да, но в коде – elect

+0

имена пакетов - это идентификаторы? – elect

+0

@elect Они состоят из идентификаторов. См. Https://docs.oracle.com/javase/specs/jls/se8/html/jls-6.html#jls-6.5.3.1. – manouti

3

в этом случае null является буквальным (null literal) на языке Java, вы не можете использовать в качестве идентификатора ...

По Oracle:

Naming Convention:

Имена пакетов записываются во всех нижних регистрах, чтобы избежать конфликтов с именами классов или интерфейсов .

...

В вашем случае После ссылки важно:

В некоторых случаях имя домена интернет не может быть действительным пакет имя. Это может произойти, если имя домена содержит дефис или другой специальный символ , если имя пакета начинается с цифры или другого символа , который является незаконным для использования в качестве начала Java-имени, или , если имя пакета содержит зарезервированное ключевое слово Java, такое как «int». В этом случае предлагаемое соглашение заключается в добавлении подчеркивания. Для пример:

+0

Я собираюсь принять ваш (в 8 м), поскольку он яснее для меня и предлагает приятный трюк для моего дела. – elect

+0

Спасибо ... :) –

+0

Технически 'null' не является зарезервированным словом. Это буквально. См. Https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.9. – manouti

0

Я считаю, что это похоже только на дизайн.

Согласно спецификации языка Java, «null» является ключевым словом, и вы не можете использовать ни одно из ключевых слов для определения какой-либо другой вещи, кроме ее основной цели.

Хотя вы можете использовать Null с заглавными «N» и аналогичными для всех других ключевых слов, которые не соответствуют случаю с предопределенными ключевыми словами.

Java препятствует использованию таких плохих методов наименования.

0

null - это значение, присвоенное идентификатору. package - это идентификатор. это не может быть ценностью.

Смежные вопросы