为什么我无法计算常量注释参数?
为什么下面的代码可以编译:
final String name = "works";
@Provides @Named(name) String provideAboutTitle() {
return "ABC";
}
但是下面的代码失败(至少对于 Eclipse 的编译器):
final String name = UUID.randomUUID().toString();
@Provides @Named(name) String provideAboutTitle() {
return "ABC";
}
Eclipse 的编译器返回以下错误:
注解属性 Named.value 的值必须是常量表达式
Why does the following code compile:
final String name = "works";
@Provides @Named(name) String provideAboutTitle() {
return "ABC";
}
But the following code fails (at least with Eclipse's compiler):
final String name = UUID.randomUUID().toString();
@Provides @Named(name) String provideAboutTitle() {
return "ABC";
}
Eclipse's compiler returns the following error:
The value for annotation attribute Named.value must be a constant expression
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
错误消息中 Eclipse 要求的常量表达式是编译时常量表达式(而不仅仅是最终变量),并且需要在运行时评估方法调用
UUID.randomUUID().toString();
-时间。虽然您可以 使用 JavaAssist 写入动态注释值在运行时,您将失去注释的“易于阅读”功能。
The constant expression Eclipse demands in the error message is a compile-time constant expression (not just a final variable) and the method call
UUID.randomUUID().toString();
needs to be evaluated at run-time.While you can write dynamic annotation values using JavaAssist at runtime, you will lose "easy to read" feature of the annotations.