Java api - Имена классов, начинающиеся с _ [подчеркивание]

Мне интересно это знать, поскольку они являются частью Java API [J2SE].

Обычно принято использовать "_" в имени переменной, чтобы указать, что это переменная экземпляра или для какой-то другой специальной цели [но это явно зависит от вкуса программиста].

Но в Java API [J2SE] перечислено несколько классов, имена которых начинаются с подчеркивания ("_").

Неужели у Oracle есть какое-то особое значение / цель для этого подчеркивания? [Если да, то] Почему эти классы отличаются по сравнению с другими классами в том же API?

http://docs.oracle.com/javase/7/docs/api/

_BindingIteratorImplBase
_BindingIteratorStub
_DynAnyFactoryStub
_DynAnyStub
_DynArrayStub
_DynEnumStub
_DynFixedStub
_DynSequenceStub
_DynStructStub
_DynUnionStub
_DynValueStub
_IDLTypeStub
_NamingContextExtStub
_NamingContextImplBase
_NamingContextStub
_PolicyStub
_Remote_Stub
_ServantActivatorStub
_ServantLocatorStub

4 ответа

Решение

Эти классы на самом деле не являются классами Java, они являются частью реализации CORBA и генерируются из независимых от языка программирования определений IDL - соглашение об именах является CORBA.

Обычно принято использовать "_" в имени переменной, чтобы указать, что это переменная экземпляра или для какой-то другой специальной цели.

Не на Яве. Соглашение такого рода требуется в C++ из-за синтаксиса конструктора для переменных-членов. В Java такого требования нет, следовательно, оно используется редко, и только люди, которые, кажется, думают, что все еще программируют на C++.

Все упомянутые вами классы были определены OMG в начале 1990-х годов в соответствии с ограничением именования, введенным в CORBA IDL, что опять-таки не имеет ничего общего с Java.

Опять же, для этого нет особой причины... это вопрос вкуса.

Однако, если вы хотите полностью следовать соглашениям об именах Java, следует избегать добавления _ к названию класса.

Излишне добавлять _ Для членов класса большинство IDE окрашивают эти поля другим цветом, и вы можете легко отличить их от локальных переменных. Я вижу этот кусок кода более элегантным:

public MyConstructor(int field) {
    this.field = field;
}

чем

public MyConstructor(int field) {
    _field = field;
}

Но опять же, это по-прежнему вопрос вкуса, и, возможно, ваша компания работает с ним, поэтому вы не хотите быть первым, кто сломает его.

Соглашения об именах для пакетов, классов и переменных

Вот таблица соглашения об именах, которой нужно следовать при написании кода Java.

Вы можете начать имя класса с "_", но это не рекомендуется.

Другие вопросы по тегам