如何查找一个抽象类的所有子类? 有没有好用的库?像apache commons里的有没有专们处理这些方面的,像接口的所有实现类等。现成的库有吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用java的反射机制,不就搞定了 没看懂啥意思,标题的意思有点奇怪接口不应该知道它的具体实现是什么,这违背设计的初衷只有具体业务具体实现某个接口如果你说你coding的时候想要知道的话,Eclipse里用Ctrl+T即可 对如果是已编译的class文件,,可以使用JAVA反射机制。如果是源码可以通过eclipse的CTRL+T查看 一般比较少用的,因为这样的话你必须扫描所有的jar并加载所有的class到内存中才可以知道到底是否为子类。效率低并且占用大量内存(因为可能这些类本来不需要使用的)建议不要使用,若一定需要你可以自己加载所有的类然后再判断 如果你使用自己的classloader的话,即读即扔,内存消耗还好。 用反射的没明白我的意思?是找基类的继承类,不是找子类的父类。如:abstract class AbstractClass;class MyClass extends AbstractClass;即我现在只有AbstractClass定义,哪些扩展是留给开发人员的。所以有没有扩展我是不知道的。所以我想把我定义好的接口(抽象类)的所有实现(子类)找出来。这样我才能判断有哪些扩展,该怎么处理。只有自己写类遍历吗?我知道是要遍历,但有没有现成的库呢? 自己遍历开发人员扩展不是一个好的方法,通常都是要求写扩展的人在某个地方写配置文件的。其实我觉得要不你就固定一个包名,要求开发人员固定用这个包名,这样可以用Spring中的类完成ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();Resource[] resources = resourcePatternResolver.getResources("chdw.test");System.out.println(resources[0]); Class.getGenericSuperclass() 反射個毛啊,把類加載到內存,用instanceof比較一下不就知道了 public static void main(String[] args) throws Exception { Class a = Class.forName("java.util.ArrayList"); Class b = null; while ((b = a.getSuperclass()) != null) { a = b; System.out.println(b); } }當俺樓上的是放屁 这个必须限定范围,在项目的classpath里,某个jar包,或其他。否则,你说说人文始祖黄帝的子孙有多少? jpg图片读取 java设计实现日历计算程序 虚拟机装linux 字符串转为int传入时,越界的判断如何进行啊? 一个数据库查询问题 Applet中可以有SQL语句查询数据库吗?? 怎样用java来读BMP文件? 这本书怎么样? import com.borland.jbcl.control.* 在IE中使用SWING的问题 flex String 转成XML格式 绑定到tree控件出问题了! java布局管理器和java框架编写问题
建议不要使用,若一定需要你可以自己加载所有的类然后再判断
如果你使用自己的classloader的话,即读即扔,内存消耗还好。
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resourcePatternResolver.getResources("chdw.test");
System.out.println(resources[0]);
Class.getGenericSuperclass()
public static void main(String[] args) throws Exception {
Class a = Class.forName("java.util.ArrayList"); Class b = null;
while ((b = a.getSuperclass()) != null) {
a = b;
System.out.println(b);
}
}當俺樓上的是放屁