首页 > Java > java教程 > 正文

Java 注解可以在运行时接受动态生成的值吗?

DDD
发布: 2024-10-28 14:42:30
原创
406 人浏览过

 Can Java Annotations Accept Dynamically Generated Values at Runtime?

在运行时评估注释

在 Java 中,注释对于向编译器或运行时系统提供元数据非常有用。然而,一个持续存在的问题是注释是否可以接受在运行时动态生成的值。

下面的尝试尝试为 @MyInterface 的 aString 属性生成字符串值:

<code class="java">@MyInterface(aString = MyClass.GENERIC_GENERATED_NAME)
public class MyClass {

    static final String GENERIC_GENERATED_NAME = MyClass.generateName(MyClass.class);

    public static final String generateName(final Class<?> c) {
        return c.getClass().getName();
    }
}</code>
登录后复制

但是,编译器将拒绝此操作并显示错误消息:

The value for annotation attribute MyInterface.aString must be a constant expression
登录后复制

这是因为注释是在编译时评估的,但直到运行时才知道 GENERIC_GENERATED_NAME。

为了达到预期的效果,它有必要创建一个可以在编译时评估generateName方法的注释处理器。然而,这个解决方案有局限性,因为 Java 不支持在运行时动态评估代码。

以上是Java 注解可以在运行时接受动态生成的值吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!