【问题标题】:attempting to get class names from a different package试图从不同的包中获取类名
【发布时间】:2013-05-15 18:34:14
【问题描述】:

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

导入了 javaapplication1
import javaapplication1.*;

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

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

【问题讨论】:

  • 什么是包。这是您的自定义课程吗?
  • 您是否检查过 javaaplication1 jar 是否在 javaaplication1 的类路径中?
  • 我在javaapplication2的编译时库中添加了javaapplication1。我能够在没有 javaapplication2 的类扩展它的情况下访问它的方法。

标签: java packages


【解决方案1】:

我没有足够的代表对此问题发表评论或将其标记为这样,但它与以下内容重复:

Getting all Classes from a Package

这个问题上列出了很多很好的答案——例如顶部正在寻找实现 ICommand 的类,所以要实现这个你需要做的就是删除:

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

从 for 循环中得到你想要的。

【讨论】:

【解决方案2】:

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

  Package.getPackage("javaapplication1");

正在为您返回 null。

另外,

你可以看看下面的链接:

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

或者可以浏览Reflection library from Google以获得所需的信息,下面是示例代码。

例如

Reflections reflections = new Reflections("javaapplication1");
Set<Class<? extends Object>> allClasses = reflections.getSubTypesOf(Object.class);

【讨论】:

    【解决方案3】:

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

    //对象接口


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

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


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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-14
      • 2013-06-17
      • 1970-01-01
      • 2023-03-29
      • 2019-09-26
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      相关资源
      最近更新 更多