【发布时间】:2014-03-16 12:44:57
【问题描述】:
我很想知道这一点,因为它们是 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
【问题讨论】:
-
它们在
org.omg包中(以及其他带有该前缀的包)。它们很可能是实现类,实际上并不是 Java API 的一部分。 -
“通常约定在变量名中使用“_”来表示它们是实例变量或用于其他特殊目的”:Java 中没有。由于成员变量的构造函数语法,在 C++ 中需要这种约定。 Java 中没有这样的要求,因此它很少使用,并且只有那些认为他们仍在使用 C++ 编程的人才能使用。您提到的类都是 OMG 在 1990 年代初期根据 CORBA IDL 施加的命名限制定义的,这又与 Java 无关。
-
@EJP:我看你和我一样,发表太多评论。通常情况下,您会给出一个完全有效的答案。
-
@Gimby 谢谢。它最初是一条评论,但后来变得像 Topsy。我现在已经把它作为答案发布了。