首页  >  文章  >  Java  >  Java 注解可以在运行时接受动态生成的值吗?

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

DDD
DDD原创
2024-10-28 14:42:30406浏览

 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn