给定一个java语言的包,我想知道它包含多少个类及其列表(这些类的列表)。
我可以使用myClass1.class.getPackage()
访问我的软件包,但在此之后我 有getClasses()
或size()
或lenght
之类的内容或ClassesCount()
。
谢谢
答案 0 :(得分:1)
在Java中,类是动态加载的。所以根本没办法做你想做的事;虚拟机本身不知道包中的完整类列表。
答案 1 :(得分:1)
这方面已经有很多问题和答案, 你可以点这些链接
a)How to get all classes names in a package?
b)How can I list all classes loaded in a specific class loader
答案 2 :(得分:1)
查看可能允许轻松实现此目的的reflections库:
Reflections reflections = new Reflections("my.project.prefix");
Set<Class<? extends SomeType>> subTypes =
reflections.getSubTypesOf(SomeType.class);
我猜你可以使用Object
代替SomeType
,因为Object是java中所有类的超类:
Set<Class<? extends Object>> allClasses =
reflections.getSubTypesOf(Object.class);