为什么我无法计算常量注释参数?

发布于 2025-01-02 03:47:17 字数 410 浏览 0 评论 0原文

为什么下面的代码可以编译:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

豆芽 2025-01-09 03:47:17

错误消息中 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文