gpt4 book ai didi

java - 按名称检索注释

转载 作者:行者123 更新时间:2023-11-30 07:41:23 25 4
gpt4 key购买 nike

我知道可以通过名称获取类,使用

public String className = "someName";
public Class<?> c = Class.forName(className);

是否可以通过名称检索注释?我试过这个:

public String annotationName = "someName";
public Class<?> c = Class.forName(annotationName);

然后将 c 转换为 Class<? extends Annotation> ,这有效,但我收到未经检查的强制转换警告。

我也试过

public String annotationName = "someName";
public Class<? extends Annotation> c = Class.forName(annotationName);

但是当我这样做时,我得到了错误

Incompatible types.
Required: Class<? extends java.lang.annotation.Annotation>
Found: Class<Capture<?>>

最佳答案

使用asSubclass .与编译器生成的类型转换不同,它只能处理编译时已知的类型,这将对运行时检索到的 Class 对象执行检查。由于这是安全的,它不会生成“未经检查的转换”警告。注意类似操作的存在,cast用于转换 Class 的实例。这些方法是在 Java 5 中添加的,专门用于帮助代码使用泛型。

String annotationName = "java.lang.Deprecated";
Class<? extends Annotation> c = Class.forName(annotationName).asSubclass(Annotation.class);
boolean depr = Thread.class.getMethod("stop").isAnnotationPresent(c);
System.out.println(depr);

关于java - 按名称检索注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56097659/

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