迭代具有特定注释的所有类[重复]

Posted

技术标签:

【中文标题】迭代具有特定注释的所有类[重复]【英文标题】:Iterate on all class having a specific annotation [duplicate] 【发布时间】:2012-03-22 03:10:15 【问题描述】:

我想写一个简单的注解,比如“@interface MyClassAnnotation”和“@interface MyMethodAnnotation”,它以类和方法为目标!但主要问题是,在主函数上,我需要列出所有具有该注释的 JVM 上的所有类和方法实例!而且我不想使用任何额外的库,只是纯粹的内置 java 函数。 谁能给我一个好的sn-p?

【问题讨论】:

已经回答了吗? ***.com/questions/659349/… 真的没有回答,大家都知道我们应该使用Reflection,问题是HOW?有时 *** 的最佳答案只不过是问题本身。我更愿意将该答案报告为“故意滥用能力”,而不是标记为最佳答案:-| 【参考方案1】:

您可以使用getAnnotation 元素确定您的注释是否存在于特定类或方法上,该元素由Classjava.lang.reflect.Method 实现。

真正的问题是,您想在哪些类和方法上进行测试? “所有这些”有点难以定义。似乎没有办法枚举 JVM 已加载的所有类。

【讨论】:

我想创建类似tomcat的东西!加载时的 apache tomcat 可以找到所有具有 @WebServlet 注释的 servlet 类并保持它们的 url 映射以将传入连接映射到 servlet,我想在类路径中找到所有具有一些注释的类【参考方案2】:

遍历所有课程是不可行的,您必须以某种方式缩小范围。提供一个可配置的包列表,其中可能包含您的特定注释的类,或者使用 Java 中的ServiceLoader 概念来声明您需要查找的类集(如果可能知道加载服务的代码,这很有用关于或链接到所有实现)。

【讨论】:

我想在 classpath 中搜索,你能给我一个 ServiceLoader 的相关示例链接吗?

以上是关于迭代具有特定注释的所有类[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何找到具有特定注释的所有 Java 对象(不是类)?

隐藏具有特定类的第一个 div [重复]

如何样式化具有特定子级的父 CSS 类 [重复]

Java找到具有特定值的所有键[重复]

XPath:查找具有特定属性的所有已知标签[重复]

如果有 id 重复,则选择所有行,然后选择具有特定类型的(2 个)