【发布时间】:2013-12-08 12:01:53
【问题描述】:
给定一个 java 语言的包,我想知道它包含多少个类以及它们的列表(这些类的列表)。
我可以使用myClass1.class.getPackage() 访问我的包,但在此之后我没有有类似getClasses() 或size() 或lenght 或ClassesCount() 之类的东西。
谢谢
【问题讨论】:
-
你必须为此编写自己的类加载器
给定一个 java 语言的包,我想知道它包含多少个类以及它们的列表(这些类的列表)。
我可以使用myClass1.class.getPackage() 访问我的包,但在此之后我没有有类似getClasses() 或size() 或lenght 或ClassesCount() 之类的东西。
谢谢
【问题讨论】:
看看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);
【讨论】:
在 Java 中,类是动态加载的。所以根本没有办法做你想做的事;虚拟机本身并不知道包中类的完整列表。
【讨论】:
myPackage.时(。)我有所有类的列表,但当我写myClass.class,getPackage()时没有@
【讨论】: