文档章节

Java获取所有子类、实现类

哈特中尉
 哈特中尉
发布于 2015/12/30 21:06
字数 274
阅读 316
收藏 1
功能说明:下拉选择某个接口的所有实现类,方面运维人员通过界面配置相关功能,而不是手动复制粘贴。
需求说明:扫描jvm中某个接口的所有实现类;扫描某个类的所有子类。


需要依赖第三类库:reflections  
google code项目主页: https://code.google.com/p/reflections/

已经知道继承关系:

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.扫描接口的子接口

© 著作权归作者所有

共有 人打赏支持
哈特中尉
粉丝 0
博文 7
码字总数 4212
作品 0
西安
CTO(技术副总裁)
私信 提问
浅谈Scala的特质(trait)

虽然scala的特征相当于Java的接口,但是在使用上,我觉得scala的特征更像抽象类。 比如我们要开发一个2D图形库,必然涉及到矩形对象的定义。 一个矩形可以由对角线上的两个端点唯一确定。矩形...

mj4738
2011/11/14
0
0
ThreadLocal使用方法&实现原理

Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的ThreadLocal变量...

秋风醉了
2014/08/01
0
1
【JVM】浅谈双亲委派和破坏双亲委派

一、前言 笔者曾经阅读过周志明的《深入理解Java虚拟机》这本书,阅读完后自以为对jvm有了一定的了解,然而当真正碰到问题的时候,才发现自己读的有多粗糙,也体会到只有实践才能加深理解,正...

joemsu
07/14
0
0
阿里历年经典Java面试题汇总

Volatile的特征: A、禁止指令重排(有例外) B、可见性 Volatile的内存语义: 当写一个volatile变量时,JMM会把线程对应的本地内存中的共享变量值刷新到主内存。 当读一个volatile变量时,J...

Java团长17
07/11
0
0
JAVA接口的概念、分类及与抽象类的区别

Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(...

郭二翔
2011/12/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

storm 环境搭建

1.下载解压 下载地址:http://storm.apache.org/downloads.html

MrPei
6分钟前
0
0
Python Base - 读写文件,字符串拼接,单引号

字符转义 读写文件cvs 字符串拼接,替换 import csvcsv_file_name = 'cardbin.csv'# insert into `card_bin_code` (name_of, code_of, card_no_prefix, bank_code) values ('中国银行......

园领T
8分钟前
0
0
基于JQUERY BOOTSTRAP 最简单的loading遮罩层

<%--loading遮罩层--%><div class="modal fade" id="loadingModal" backdrop="static" keyboard="false">   <div style="width: 200px;height:20px; z-index: 20000; position: abs......

颖辉小居
8分钟前
0
0
springboot+kafka

1,首先springboot对kafka的支持也很好,同样是在配置文件中配置好参数,然后就可以直接使用。先说一下,很简单,,,不要怕 2,我用的依赖是 <dependency> <groupId>org.springframewor...

我真是小菜鸡
12分钟前
2
0
webservice动态客户端自我记录备份(spring boot)

动态客户端相比直接调用webservice的客户端代码要简单很多,但实际上很多工作是java自己替我们做掉了。简单记录一下内容,以备后续使用: pom文件只需要引入: <!-- CXF webservice --><de...

checkboxMan
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部