Java全局命名空间访问

Eyv*_*ind 5 java code-generation namespaces package

鉴于以下计划:

class A {
   static int java = 42;
   static int System = -1;

   public static void main(String[] args) {
      java.lang.System.out.println("Foo");
   }
}
Run Code Online (Sandbox Code Playgroud)

编译这个给我一个错误,说"int不能被解除引用".原因很明显,但是应该如何处理这样的情况.它在代码生成场景中尤其重要,在代码生成场景中,人们无法知道哪些用户代码与生成的代码交织在一起.

在C#中我只会在"java.lang"之前使用"global ::"命名空间说明符,但是你用Java做什么?

Mar*_*nik 2

Java 中没有针对此类命名冲突的通用解决方案。发现这一点可能会令人沮丧,但在实践中很少会出现实际问题。有一些标识符应避免用作成员变量名称,例如javacom,因为它们用于顶级域名。

还有一些其他潜在的冲突,我们通过遵守命名约定来避免这些冲突——类名以大写开头,变量名以小写开头。