gpt4 book ai didi

java - getAnnotations() 为空

转载 作者:太空狗 更新时间:2023-10-29 22:37:33 24 4
gpt4 key购买 nike

我想在我的应用程序中使用注释。为此,我为注释创建了“hello world”:

如下示例:

public class HelloAnnotation
{
@Foo(bar = "Hello World !")
public String str;

public static void main(final String[] args) throws Exception
{
System.out.println(HelloAnnotation.class.getField("str").getAnnotations().length);
}
}

这是注释:

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
public @interface Foo
{
public String doTestTarget();
}

我现在的问题是 main 中的 getAnnotations() 是空的。我的代码有什么问题?

最佳答案

将以下内容添加到您的注释中:

    @Retention(RetentionPolicy.RUNTIME)

来自 @Retention 的 javadoc :

the retention policy defaults to RetentionPolicy.CLASS

来自 RetentionPolicy 的 javadoc :

    • 注释将由编译器记录在类文件中,但不需要在运行时由 VM 保留
  • 运行时间
    • 注释将由编译器记录在类文件中,并在运行时由 VM 保留,因此可以以反射方式读取
  • 来源
    • 注释将被编译器丢弃。

关于java - getAnnotations() 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12642266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com