Java:接口文件中的国际化/ResourceManager

Java:接口文件中的国际化/ResourceManager,java,internationalization,resourcemanager,Java,Internationalization,Resourcemanager,我的java项目中有一个注释,其中包含一些默认字符串: public @interface MyInterface { String message() default "Dependency for field; must be set here"; // ... } 我在这里怎么做?在我的类中,我会通过ResourceManager加载字符串 public class ValidationDocument { private String message = Resourc

我的java项目中有一个注释,其中包含一些默认字符串:

public @interface MyInterface {
  String message() default "Dependency for field; must be set here";
  // ...
}
我在这里怎么做?在我的类中,我会通过ResourceManager加载字符串

public class ValidationDocument {
    private String message = ResourceManager.findLiteral("ValidationDocument", "default.message");
    // ...
}

我无法在注释定义中加载ResourceManager。在这里进行国际化的好方法是什么?

你是对的,你不能这样做,因为注释是在编译时计算的,因此你只能使用常量或只涉及常量的表达式。只有在运行时才可用的信息,例如通过调用方法检索的信息,甚至是静态的信息,因此不能在注释中分配

注释不是为了在运行时动态修改而设计的,因此您需要更改方法

我只能建议做如下事情:

public @interface MyInterface {
  String messageKey() default "myinterface.mykey";
  // ...
}

然后,实际引用
@MyInterface
注释实例的代码将使用
messageKey
ResourceManager
中查找消息。可能会起作用,这取决于您试图用它实现什么。

现在我的猜测是:在注释定义中,您无法做到这一点-请找到另一种方法。有人会同意吗?