怎样通过程序获取某个类的所有子类?
解决方案 »
- 单例模式跟工厂模式的结合。。
- 如何仅知道class名,取得包括package的全名?
- java怎么获取package包中所有类的名字
- 弱弱的问一个关于JAVA成员变量继承的问题
- 一个简单的java算数式(除数为double=0.0),在线等。
- 【求助】请问关于快捷键的问题~
- 组播问题,MulticastSocket接收信息时被阻塞,为何接收不到数据呢?
- 为什么我的windows98在运行java的时候老报JNI接口失败的错误?
- 一个新手提的可能愚蠢的问题
- 静态方法和private方法到底能不能被覆盖呀?
- 关于org.apache.commons.net.ftp.FtpClient上传文件的问题
- poi excel 格式问题
ClassSet-------要查找的类集合,
目标:从ClassSet中查找所有属于Class1的子类Class1 obj = Class1.getClass().newInstance(); //创建Class1的实例// 遍历ClassSet
if(C1.isInstance(Object obj)){
//是ClassSet的子类
} 试下吧。没验证
咱们试想想,如果在JAVA机制中,记录了每个类的父类,而且还记录每个父类的子类,是不是在存储上来讲就多此一举呢?
如果一定要实现,觉得可以反向,即:遍历指定的包内所有的类,看其父类是否就是预先想要的。
如用程序的话,好像spring提供了方法,具体的忘记了
package io;import java.io.File;public class GetAllSubclass {
public static void main(String[] args) {
File rootFile = new File(GetAllSubclass.class.getResource("/").getFile().replaceFirst("/", "")); setSonList(rootFile, rootFile.getPath() + "\\", GetAllSubclass.class);
} public static <T> void setSonList(File rootFile, String parentDirectory, Class<T> parentClass) {
if (rootFile.isDirectory()) {
File[] files = rootFile.listFiles();
for (File file : files) {
setSonList(file, parentDirectory, parentClass);
}
} else {
String className = null;
try {
if (rootFile.getPath().indexOf(".class") != -1) {
className = rootFile.getPath().replace(parentDirectory, "").replace(".class", "").replace("\\", ".");
Class<?> classObject = Class.forName(className);
classObject.asSubclass(parentClass); System.out.println(className + " 是 " + parentClass + " 的子类");
}
} catch (ClassNotFoundException e) {
System.err.println("找不到类 " + className);
} catch (ClassCastException e) {
System.err.println(className + " 不是 " + parentClass + " 的子类");
}
}
}
}class Sub1 extends GetAllSubclass {}class Sub2 extends GetAllSubclass {}
应该有获得已加载类的方式的。。 挺多知识都不知道 我惭愧啊。。