0

要在同一类的注解中引用类常量,该引用必须以类名作为前缀:

package example;

@MyAnnotation(someAttribute = SomeClass.someConstant)
public class SomeClass {

    public static final someConstant = "...";

}

由于在使用多个常量/字符串连接时这会变得非常庞大,我可能会简单地在同一个文件中使用以下导入指令来消除对这些前缀的需要:

package example;

import static example.SomeClass.*;

@MyAnnotation(someAttribute = someConstant + more + constants)
public class SomeClass {

    public static final someConstant = "...";
    public static final more = "...";
    public static final constants = "...";

}

有什么反对这一点,或者什么时候会导致问题/模棱两可?

Java 语言规范第 7.5.4 章静态导入按需声明v8v11v17

4

1 回答 1

1

有什么反对的吗

不,还好。

这什么时候会导致问题/模棱两可?

当您在名称与导入冲突的文件中定义符号时变得非常疯狂。

例如:

package example;

import static example.SomeClass.*;

class SomeClass {
  static int foo;

  void bar() {
    foo = 1;

    String foo = "";
    
    System.out.println(foo);  // Prints the local variable.
  }
}

但是如果你正在编写这样的代码,你应该对自己进行严厉的谈话,所以这不是一个真正的问题。

于 2021-09-29T16:24:12.313 回答