命名可能与java.lang冲突的类。*

时间:2014-10-02 13:17:06

标签: java naming-conventions

由于java.lang.*类被隐式导入到每个源文件中,这使得开发人员更难在自己的命名空间中使用这些类名。例如,某人可能想要创建Compiler类,因为它是一个通用名称,java.lang.Compiler很少使用。通过这样做,开发人员每次都必须使用其完全限定名称,如com.my.organization.my.very.long.package.name.Compiler,这不会提高代码的可读性。明确地导入这个类会非常混乱,并且将名称更改为更具体的东西并不总是一个选项,因为Compiler可能是通用任何东西到任何编译器的接口。因此,在某些情况下,唯一的选择是添加前缀或后缀以区分名称。我能想象的另一个例子是论坛应用程序,它可能包含AuthorPost和是 - Thread等类。向Thread添加任何内容都会明显区别于功能相似的类。在这种情况下,是否有关于类命名的约定?我个人看到的最少侵入性选项是添加一个尾随下划线,如Thread_

1 个答案:

答案 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