动态地将键传递给@Named注释

时间:2011-09-16 23:20:05

标签: java guice

我面临以下问题。任何人都可以帮助理解为什么会这样吗? 另请分享您对第二个场景的工作的想法。

  1. 这没有任何编译问题,

    private final String var ="US";
    @Inject @Named (var) private Validator validator; 
    
  2. 这会产生编译错误, 编译错误:“注释属性Named.value的值必须是常量表达式”

    private final String var =System.getProperty("US");
    @Inject @Named (var) private Validator validator;
    

1 个答案:

答案 0 :(得分:3)

在第一种情况下,编译器看到一个常量已分配给一个私有的最终变量,因此它会优化掉变量并在其位置使用常量。在第二种情况下,它不能这样做,因此它在注释中留下了一个变量。