同一文件中常量的静态导入

static import for constants in same file

要在同一个 class 上的注释中引用 class 常量,引用必须以 class 名称作为前缀:

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 章静态导入按需声明v8, v11, v17

Is there anything against this

不,没关系。

when could this lead to problems / ambiguities?

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

例如:

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.
  }
}

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