0

有两个项目 javaapplication2 和 javaapplication1。它们的包名称相同。在 javaapplication2 中,我使用导入了 javaapplication1

import javaapplication1.*;

我需要列出包中的所有类。如何做到这一点?我尝试了一个简单的代码,但它得到了一个空异常。

Package pck;
pck = Package.getPackage("javaapplication1");
System.out.println(pck.getClass());
4

3 回答 3

0

我猜包含包 javaapplication1 的 jar 不在类路径中,因为

  Package.getPackage("javaapplication1");

正在为您返回 null。

还,

您可以查看以下链接:

http://dzone.com/snippets/get-all-classes-within-package

或者可以探索Google 的反射库以获得所需的信息,下面是示例代码。

例如

Reflections reflections = new Reflections("javaapplication1");
Set<Class<? extends Object>> allClasses = reflections.getSubTypesOf(Object.class);
于 2013-05-15T10:16:59.270 回答
0

我没有足够的代表来评论这个问题或将其标记为这样,但它是以下内容的副本:

从包中获取所有类

该问题上列出了许多很好的答案 - 例如,顶部正在寻找实现 ICommand 的类,因此要实现这一点,您需要做的就是删除:

if (ICommand.class.isAssignableFrom(cls)) {
  commands.add((Class<ICommand>) cls);
}

从 for 循环,你有你想要的。

于 2013-05-15T10:19:19.453 回答
0

如果你通过对象类 API,它会写成:

//对象API


getClass public final Class getClass() 返回对象的运行时类。该 Class 对象是被表示类的静态同步方法锁定的对象。

返回: Class 类型的对象,表示对象的运行时类。


它写得很清楚,因为它代表了对象的运行时类。假设如果您在“javaapplication1”包中具有名为“Helloworld”的类,则该类的对象创建为:

Helloworld 世界=新的 Helloworld(); 然后尝试运行为 System.out.println(wolrld.getClass()); 它将返回当前对象的类路径。

于 2013-05-15T10:34:14.337 回答