我面临以下问题。任何人都可以帮助理解为什么会这样吗? 另请分享您对第二个场景的工作的想法。
这没有任何编译问题,
private final String var ="US";
@Inject @Named (var) private Validator validator;
这会产生编译错误, 编译错误:“注释属性Named.value的值必须是常量表达式”
private final String var =System.getProperty("US");
@Inject @Named (var) private Validator validator;
答案 0 :(得分:3)
在第一种情况下,编译器看到一个常量已分配给一个私有的最终变量,因此它会优化掉变量并在其位置使用常量。在第二种情况下,它不能这样做,因此它在注释中留下了一个变量。