给出以下程序:
class A {
static int java = 42;
static int System = -1;
public static void main(String[] args) {
java.lang.System.out.println("Foo");
}
}
编译此代码时出现错误,提示“int 无法取消引用”。原因很明显,但是遇到这样的情况应该如何处理呢?它在代码生成场景中尤其重要,在这种场景中,人们无法知道哪些用户代码与生成的代码交织在一起。
在 C# 中,我只需在“java.lang”之前使用“global::”命名空间说明符,但在 Java 中该怎么做?
Java 中这种类型的命名冲突没有通用的解决方案。发现这一点可能会令人沮丧,但在实践中很少会出现实际问题。有一些标识符应避免用作成员变量名称,例如
java
和 com
,因为它们用于顶级域名。
还有一些其他潜在的冲突,我们通过遵守命名约定来避免这些冲突——类名以大写开头,变量名以小写开头。