获取包中声明的所有Java类的名称

获取包中声明的所有Java类的名称,java,class,package,Java,Class,Package,我正在编写一个功能,它将有助于在我的程序的某个包中获取类。而且,我只想要属于某个类的类 我需要这些类,以便对它们调用静态方法 有没有一种自动的方法可以做到这一点?如果是这样,速度慢吗 如果我不清楚,我想要的是这样的: ArrayList<Class<? extends MySuperClass>> classes = ; classes.add(MyClass.class); classes.add(MyClass2.class); ArrayListJava不提

我正在编写一个功能,它将有助于在我的程序的某个包中获取类。而且,我只想要属于某个类的类

我需要这些类,以便对它们调用静态方法

有没有一种自动的方法可以做到这一点?如果是这样,速度慢吗

如果我不清楚,我想要的是这样的:

ArrayList<Class<? extends MySuperClass>> classes = ;

classes.add(MyClass.class); 
classes.add(MyClass2.class); 

ArrayListJava不提供这种功能。在包级别没有内省。这些类可以是数据库中的记录,也可以是网络连接另一端的记录。不需要存储和组织它们,以便于按包枚举


您可以制作自定义类加载器和API,以提供列出类名的方法。

我也希望列出包中的所有类,但到目前为止,这种方法非常糟糕:

  • 就像JOTN建议的那样-需要文件访问权限-如果是jar,则不需要
  • 列出一个JAR条目-嗯,还需要JAR文件
引用一个问题:

无法查询包的类(甚至其子包)。包含一个非常好的关于为什么这是有问题的讨论,以及一些解决问题的方法

无论如何,下面是如何在类上调用静态方法:

Method m = Integer.class.getMethod("toString", Integer.TYPE);
System.out.println(m.invoke(null, 123));

不幸的是,链接已断开,鉴于Oracle网站的总体状态,很难找到。这可能是断开的链接:您能否提供一个说明,说明为什么不包括此功能/很难实现此功能?这些类可能是数据库中的记录,或在网络连接的另一端。没有要求对它们进行存储和组织,以便于按包枚举。请将您的评论添加到答案中(“Frummeled”是荷兰俚语,我认为英语中也应该使用它,意思是:在多次“Frummeled”之后,以某种方式使其适合)。
Method m = Integer.class.getMethod("toString", Integer.TYPE);
System.out.println(m.invoke(null, 123));