当前位置:  开发笔记 > 编程语言 > 正文

如何在类路径中找到具有特定方法注释的所有类?

如何解决《如何在类路径中找到具有特定方法注释的所有类?》经验,为你挑选了1个好方法。

我想在Java中实现一个基于注释的初始化机制.具体来说,我有一个我定义的注释:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Initialization {

/**
 * If the eager initialization flag is set to true then the
 * initialized class will be initialized the first time it is created.
 * Otherwise, it will be initialized the first time it is used.
 * 
 * @return true if the initialization method should be called
 *         eagerly
 */
boolean eager() default false;

}

另外,我有一个界面:

public interface SomeKindOfBasicInterface {}

我想SomeKindOfBasicInterface在我的类路径上找到类的每个实现,它@Initialization在方法上有注释.我正在看Spring的MetaDataReader工具,这看起来是推迟加载其他SomeKindOfBasicInterface实现的最佳方式,而我正在这样做......但我不知道如何像我所描述的那样进行搜索.有小费吗?



1> Kaitsu..:

您可以使用Reflection,它是一个Java运行时元数据分析工具.我用它来获取给定类型的所有子类型,但它也可以处理你的情况.


如果时间/空间效率远远受到关注,我强烈建议不要使用反射或基本上使用类加载器.你的类路径中可能有很多类,所有这些加载的类现在都在permgen中.使用类似ASM(或字节码库)的东西,只需读取byte [],使用ASM库获取有关类的信息,例如'是否用x注释?' 然后才实际加载该类(如果你碰巧需要那个类).
推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有