2

我的 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。在这里进行国际化的好方法是什么?

4

1 回答 1

1

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

注释并非设计为在运行时动态修改,因此您需要更改方法。

我只能建议做类似的事情:

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

然后,实际引用@MyInterface注释实例的代码将messageKey使用ResourceManager. 可能取决于您尝试使用它实现的目标。

于 2014-12-23T13:47:02.543 回答