由于java.lang.*
类被隐式导入到每个源文件中,这使得开发人员更难在自己的命名空间中使用这些类名。例如,某人可能想要创建Compiler
类,因为它是一个通用名称,java.lang.Compiler
很少使用。通过这样做,开发人员每次都必须使用其完全限定名称,如com.my.organization.my.very.long.package.name.Compiler
,这不会提高代码的可读性。明确地导入这个类会非常混乱,并且将名称更改为更具体的东西并不总是一个选项,因为Compiler
可能是通用任何东西到任何编译器的接口。因此,在某些情况下,唯一的选择是添加前缀或后缀以区分名称。我能想象的另一个例子是论坛应用程序,它可能包含Author
,Post
和是 - Thread
等类。向Thread
添加任何内容都会明显区别于功能相似的类。在这种情况下,是否有关于类命名的约定?我个人看到的最少侵入性选项是添加一个尾随下划线,如Thread_
。
答案 0 :(得分:0)
我通常能够提出一些名称,这些名称可以避免如此通用而且存在冲突,但即使在您无法解决的情况下,如果您的代码在包中,则不合格的名称将是包的类,而不是java.lang
的一个:
stuff/Compiler.java
:
package stuff;
public class Compiler {
public static long value = 42L;
}
stuff/Foo.java
:
package stuff;
public class Foo {
public static void main(String[] args) {
System.out.println(Compiler.value); // <== Compiler is stuff.Compiler
}
}
运行该(java stuff/Foo
)会打印42
。