我很有兴趣知道这是因为它们是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
答案 0 :(得分:7)
通常,在变量名称中使用“_”表示它们是实例变量或用于其他特殊目的
不是Java。由于成员变量的构造函数语法,C ++中需要这种约定。 Java中没有这样的要求,因此很少使用它,只有看起来认为它们仍在用C ++编程的人才会使用。
你提到的类都是由OMG在20世纪90年代早期根据CORBA IDL强加的命名限制定义的,这又与Java无关。
答案 1 :(得分:5)
这些类不是真正的Java类,它们是CORBA实现的一部分,并且是从与编程语言无关的IDL定义生成的 - 命名约定是CORBA类。
答案 2 :(得分:2)
没有特别的理由,这也是一个品味问题。
但是,如果您想完全遵循Java Naming Conventions,则应避免将_
附加到班级名称。
将_
附加到类成员也是多余的,大多数IDE使用不同的颜色为这些字段着色,您可以轻松地将它们与局部变量区分开来。我看到这段代码更优雅:
public MyConstructor(int field) {
this.field = field;
}
比
public MyConstructor(int field) {
_field = field;
}
但同样,它仍然是一个品味的东西,可能是你的公司使用它,所以你不想成为第一个打破它的人。
答案 3 :(得分:0)