Java 全局命名空间访问



给定以下程序:

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 中没有通用的解决方案。我们的生活方式是

  1. 遵守命名约定,将类名与包/字段名区分开来,并且
  2. 生成代码时使用其类名限定静态 Var。

最新更新