Java获取所有子类、实现类

功能说明:下拉选择某个接口的所有实现类,方面运维人员通过界面配置相关功能,而不是手动复制粘贴。
需求说明:扫描jvm中某个接口的所有实现类;扫描某个类的所有子类。


需要依赖第三类库:reflections  
google code项目主页: https://code.google.com/p/reflections/
github项目主页: https://github.com/ronmamo/reflections
下载jar:  https://github.com/kdbanman/nodes/blob/master/libs/reflections-0.9.9-RC1/reflections-0.9.9-RC1-uberjar.jar

已经知道继承关系:
Java获取所有子类、实现类_第1张图片

Java测试代码:

public static void main(String[] args) {
		Reflections reflections = new Reflections("com", new SubTypesScanner(true));
		Set<String> allClasses = reflections.getStore().getSubTypesOf(IDog.class.getName());
		for (String string : allClasses) {
			System.out.println(string);
		}
	}

程序执行结果:

2015-12-30 20:55:35 org.reflections.Reflections scan 
信息: Reflections took 108 ms to scan 4 urls, producing 191 keys and 645 values  
com.dog.IBlackDog 
com.dog.abs.AbstractWhiteDog 
com.dog.abs.impl.SmallWhiteDog 
com.dog.abs.AbstractBlackDog 
com.dog.abs.impl.SmallBlackDog 
com.dog.IWhiteDog 


环境说明:win7+jdk1.6.0_45

扩展说明(多结果稍作过滤可以实现):
1.扫描所有接口的实现类
2.扫描所有接口的非抽象的实现类
3.扫描类的子类
4.扫描接口的子接口

你可能感兴趣的:(扫描实现类,扫描子类)