Xep*_*ris 23 java annotations classloader
我知道有一套令人难以置信的工具可以在java中加载插件类,但今天我想到了一个想法.
如果我在包"org.home.junk"中有一堆带注释和未注释的类(注释带有注释"@AnnotatedClass"),并且那些类具有带注释"@AnnotatedMethod"的注释方法,该怎么办?
第一个问题:我可以在运行时获取该特定包中所有类的数组/集合,以便我可以检查哪个类被注释并创建它们的实例.(我知道如何检查Some.class是否有本指南的注释:http://isagoksu.com/2009/development/java/creating-custom-annotations-and-making-use-of-them/ )
第二个问题: - 如果我能在第一个问题上做我想做的事 - 那么最政治的方式是什么?
我相信这是可能的,因为我理解JUnit以类似的方式加载测试用例类.
如果这可以用最少的第三方库来完成也是很酷的,再次 - 如果可能的话:)
Kow*_*ser 27
第一个答案:看看这个项目.
Reflections reflections = new Reflections("org.home.junk");
Set<Class<?>> annotated = reflections.getTypesAnnotatedWith(javax.persistence.Entity.class);
Run Code Online (Sandbox Code Playgroud)
它返回org.home.junk带有javax.persistence.Entity注释的注释的所有类.
第二个答案:要创建上述类的新实例,您可以执行此操作
for (Class<?> clazz : annotated) {
final Object newInstance = clazz.newInstance();
}
Run Code Online (Sandbox Code Playgroud)
希望这能解决所有问题
| 归档时间: |
|
| 查看次数: |
24731 次 |
| 最近记录: |