Java 获取包所有class

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 获取包所有class相关的知识,希望对你有一定的参考价值。

我想获取一个包里的所有类的class,有点像spring的扫描器
我只能想到用File指定一个路径,然后获取所有的文件名,加一大堆字符处理,最后加载class
这种方法不仅繁琐 ,还有个致命的缺陷,本地路径和tomcat上的路径不一样。。
有没有比较好的方法推荐一下

既然是封到包里的,遍历确实是有点麻烦

思路如下:

    输入包名

    转换为资源路径名,即以‘/’替换‘.’

    找到ClassLoader,并获得资源名对于的资源对象

    判断资源对象是否为jar包内

        4.1若否,则使用文件系统进行处理为文件夹,之后遍历名称进行类加载。这里直接使用资源路径名,会是其真实位置,不用关注因部署在tomcat上而产生的路径变化。

        4.2若是,则构造一个jar文件类,使用jar操作类遍历内容,进行类加载。

实现参考(其实我只是把它的思路总结出来):http://guoliangqi.iteye.com/blog/644876

参考技术A 文件枚举,过滤不相关的文件。。。。。。。。追问

能不能说具体一点呢

以上是关于Java 获取包所有class的主要内容,如果未能解决你的问题,请参考以下文章

java 获取指定包下类的实例(100分)

java 如何获取基本类的class

java通过包名反射获取所有的类名

Class类getResource方法获取文件路径

[1]Java开发实习面试打卡

[1]Java开发实习面试打卡