Java 动态地将密钥传递给@Named注释
我面临以下问题。有人能帮助理解为什么会这样吗? 另外,请分享您对第二个场景的想法Java 动态地将密钥传递给@Named注释,java,guice,Java,Guice,我面临以下问题。有人能帮助理解为什么会这样吗? 另外,请分享您对第二个场景的想法 这项工作没有任何编译问题 private final String var ="US"; @Inject @Named (var) private Validator validator; 这是给编译错误, 编译错误:“名为.value的批注属性的值必须是常量表达式” 在第一种情况下,编译器看到一个常量被分配给了一个私有的final变量,因此它优化了该变量,并在其位置使用该常量。在第二种情况下,它不能这样做
private final String var ="US";
@Inject @Named (var) private Validator validator;
在第一种情况下,编译器看到一个常量被分配给了一个私有的final变量,因此它优化了该变量,并在其位置使用该常量。在第二种情况下,它不能这样做,因此在注释中留下一个变量。这里的重点是注释属性必须是文本(即常量),这是Java 5(及以上)语言的指定(和实现)方式。这是无法回避的事实。
private final String var =System.getProperty("US");
@Inject @Named (var) private Validator validator;