迭代具有特定注释的所有类[重复]
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
元素确定您的注释是否存在于特定类或方法上,该元素由Class
和java.lang.reflect.Method
实现。
真正的问题是,您想在哪些类和方法上进行测试? “所有这些”有点难以定义。似乎没有办法枚举 JVM 已加载的所有类。
【讨论】:
我想创建类似tomcat的东西!加载时的 apache tomcat 可以找到所有具有 @WebServlet 注释的 servlet 类并保持它们的 url 映射以将传入连接映射到 servlet,我想在类路径中找到所有具有一些注释的类【参考方案2】:遍历所有课程是不可行的,您必须以某种方式缩小范围。提供一个可配置的包列表,其中可能包含您的特定注释的类,或者使用 Java 中的ServiceLoader
概念来声明您需要查找的类集(如果可能知道加载服务的代码,这很有用关于或链接到所有实现)。
【讨论】:
我想在 classpath 中搜索,你能给我一个 ServiceLoader 的相关示例链接吗?以上是关于迭代具有特定注释的所有类[重复]的主要内容,如果未能解决你的问题,请参考以下文章