当前位置: 首页 > 知识库问答 >
问题:

按名称检索注释

滑弘扬
2023-03-14

我知道有可能通过名字得到一个类,使用

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

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

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

然后将c转换为

我也试过

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

但当我这么做的时候,我得到了错误

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

共有1个答案

云长恨
2023-03-14

使用asSubclass。与编译器生成的类型转换不同,它只能处理编译时已知的类型,这将对运行时检索的对象执行检查。因为这是安全的,所以不会生成“未检查的强制类型”警告。请注意,存在一个类似的操作,cast,用于强制转换类的实例。这些方法是在Java中添加的

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);

 类似资料:
  • 我写了下面的代码: 但不幸的是,它给了我以下例外: servlet com.google.appengine.api.files中出现未捕获的异常。com.google.appengine.api.files.FileServiceImpl.translateException(FileServiceImple.java:597)中的FinalizationException位于com.goole

  • 我有一个关于Spring注释的问题。在我的(学习)项目中,我定义了两个类,另一个类有两个属性,每种类型一个。为了生成一个错误,我在XML中定义了两个相同类类型的beans,并且在setter方法中使用了@Autowired注释。大概是这样的: 在主类中,我获取此 Bean 的应用程序上下文的实例,并打印覆盖 toString 方法的属性的内容,这是一个简单的测试。我已经读到Spring自动连线注释

  • 我使用的是Spring Boot1.3,我有下面的配置类: 当我试图按名称注入下面的bean之一时,它抛出:没有定义[java.text.SimpleDateFormat]类型的合格bean:预期的是单个匹配bean,但找到了2:dateAndTimeFormater,DateFormater。 如有任何建议,将不胜感激?

  • 问题内容: 自从我上次使用1.4.X版本以来,我一直在尝试更新有关J​​ava的知识…我正在尝试使用1.6.0,尤其是Java Persistence API(2.0)。 我设法创建了一个实体类。因为我能够存储和检索数据,所以它正在工作。 但是我无所事事,当我决定用表的列名填充JList时并没有成功… 这是一个简单的类,看起来像: 有没有办法检索列名? 我找到了这个帖子。似乎是一个有效的解决方案,

  • 我刚刚开始学习Spring,我面临以下问题。有人能指出我可能做错了什么吗? 线程“main”组织中出现异常。springframework。豆。工厂BeanDefinitionStoreException:IOException解析来自类路径资源[org/pus/learn/src/main/resources/applicationBean.XML]的XML文档;嵌套的例外是java。伊奥。Fi

  • 问题内容: 是否可以像使用JUnit一样(使用getName()或rules)检索当前正在运行的测试名称? PS我不想使用基于堆栈跟踪的一些自写工具。 问题答案: 根据位于http://testng.org/doc/documentation- main.html的 TestNG文档, 您可以实现可能有助于您解决问题的侦听器。 查看5.16节的TestNG侦听器,尤其是IInvokedMethod