【问题标题】:How can I know the classes of a given package [duplicate]我如何知道给定包的类[重复]
【发布时间】:2013-12-08 12:01:53
【问题描述】:

给定一个 java 语言的包,我想知道它包含多少个类以及它们的列表(这些类的列表)。

我可以使用myClass1.class.getPackage() 访问我的包,但在此之后我没有有类似getClasses()size()lenghtClassesCount() 之类的东西。

谢谢

【问题讨论】:

  • 你必须为此编写自己的类加载器

标签: java class size package


【解决方案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);

【讨论】:

    【解决方案2】:

    在 Java 中,类是动态加载的。所以根本没有办法做你想做的事;虚拟机本身并不知道包中类的完整列表。

    【讨论】:

    • 但是当我在编程并且我在写点之后写myPackage.时(。)我有所有类的列表,但当我写myClass.class,getPackage()时没有@
    • 对。你的开发环境知道所有的类是什么;它必须这样做,因为它需要编译它们。但是,除非您明确将其放入,否则程序本身无法获得此信息。
    【解决方案3】:

    【讨论】:

    • 对不起,我看到第一个和第二个不完全像我的,但最后一个是。该怎么办?我应该删除问题吗?
    • @RiadSaadi 我认为你不应该删除这篇文章中已经有很多有用的专家cmets。
    • @SantoshJoshi 正如你所知,这是其他问题的重复,所以你不应该发布作为答案。
    • 但是在规定中,出现重复的情况怎么办?
    • @RiadSaadi,如果您认为您的问题是重复的,请继续删除它。我也是一个回答者,但我不应该回答在其他地方已经完成并且比我更好的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 2014-04-15
    相关资源
    最近更新 更多