java 所有子类_java 查找类的所有子类

package _02;

import java.io.File;

import java.net.URL;

public class MainTest_FindAllSubClass {

public static void main(String[] args) {

Class> clazz = MainTest_FindAllSubClass.class;

// 定位到当前的包路径

// URL url = Toy.class.getResource("");

// 定位到bin目录

URL url = clazz.getResource("/");

System.out.println(url);

String fileName = url.getFile();

System.out.println(fileName);

String pathName = fileName.replaceFirst("/", "");

System.out.println(pathName);

File rootFile = new File(pathName);

setSubList(rootFile, rootFile.getPath() + "\\", clazz);

}

/**

* 遍历bin目录下所有文件

* 若是文件夹,则递归将文件夹内文件添加到文件数组

* 若是文件,则将文件加载并强制类型转换为要查找子类的父类,转换无异常,说明加载类是父类的子类

* (当遍历到类自身时,此处认为也属于子类,当然这是我的一厢情愿,我肯定不告诉你--〉我嫌麻烦。。

* 不过我还是加上了判断--〉自我要求比较高。。

* )

* */

public static void setSubList(File rootFile, String parentDirectory,

Class parentClass) {

if (rootFile.isDirectory()) {

File[] files = rootFile.listFiles();

for (File file : files) {

setSubList(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);

// 要么是子类,要么是类本身

if (! className.equals(parentClass.getCanonicalName())){

System.out

.println(className + " extends " + parentClass);

}else{

System.out

.println(className + " is " + parentClass);

}

}

} catch (ClassNotFoundException e) {

System.err.println("can not find " + className);

} catch (ClassCastException e) {

System.err.println(className + " do not extends " + parentClass);

}

}

}

}

// 测试

class Sub1 extends MainTest_FindAllSubClass {

}

//测试

class Sub2 extends MainTest_FindAllSubClass {

}

原文:http://www.cnblogs.com/cnblogszs/p/6033494.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[渝粤教育] 中国地质大学 计算机图形学(新) 复习题

《计算机图形学》模拟题 一单选题 1.枚举出图形中所有点的表示方法是() A.图形 B.图像 C.参数法 D.点阵法 2.下面哪个设备不是计算机图形学的输入设备 A.光笔 B.键盘 C.扫描仪 D.显示器 3.下面哪个设备不是计算机图形学的输出设备 A.激光打印机 B.显示器 C.数据手套 D.喷墨打…

光纤收发器有什么用?光纤收发器的作用是什么?

光纤收发器是光通信系统所必须的一款产品设备,它的主要作用是将短距离的双绞线电信号和长距离的光信号进行互换的以太网传输媒体转换单元。那么,光纤收发器有什么用?光纤收发器的作用是什么呢?接下来我们就跟随飞畅科技的小编来一…

[渝粤教育] 中国地质大学 面向对象程序设计 复习题 (2)

《面向对象程序设计》模拟题 一.单选题 1.如果一个类中包含纯虚函数则该类称为(). A.抽象类 B.虚基类 C.派生类 D.子类 2.在类中将show声明为不带返回值的纯虚函数则正确的写法是(). A.virtual void show()0; B.virtual show()0; C.virtual void show(); D.void show()0 virtu…

java如何调用static类_Java中的static的使用指南

一、Java中的static使用之静态变量1.Java 中被static修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享、且优先于对象存在。静态成员可以使用类名直接访问,也可以使用对象名进行访问。使用 stat…

如何利用光衰减器测试光纤收发器的灵敏度?

光纤收发器的灵敏度可以说是光纤收发器的一个重要指标,了解如何测试光纤接收器的灵敏度是一项很重要的技能。当光输入功率在一定范围内时,光纤接收器的性能最佳。但是如何来判断光纤收发器是否会在最低光输入功率时,提供最佳性能呢&#xff1…

[渝粤教育] 西南科技大学 数控机床与编程 在线考试复习资料

数控机床与编程——在线考试复习资料 一、单选题 1.非模态代码指令是指( )。 A.一经在一个程序段中指定,直到出现同组的另一个代码时才失效 B.只在写有该代码的程序段中有效 C.不能独立使用的代码 D.有续效作用的代码 2.S1000表示( )。 A.主轴转速 1000mm/min B.主轴转速1000r…

java与lisp_javalisp

当下,包管理工具十分流行,如今不光是开发用的包,就连软件包都有管理器了。下面隆重推荐 Chocolatey ,官网跟其他包管理器一样,都推崇使用命令行下面说一下安装方法管理员身份运行 cmdpowershell -NoProfile -Execution…

mapreduce 算法_MapReduce算法–了解数据联接第二部分

mapreduce 算法自从我上一次发布以来已经有一段时间了,就像我上一次大休息一样,我正在Coursera上一些课程。 这次是Scala中的函数式编程 原理和React式编程原理 。 我发现它们都是不错的课程,如果有时间的话,建议您选一门。 在这篇…

[渝粤教育] 西南科技大学 电子信息工程专业导论 在线考试复习资料

电子信息工程专业导论——在线考试复习资料 一、单选题 1.下面是关于计算机中定点数和浮点数的一些叙述,正确的是( ) A.浮点数是既有整数部分又有小数部分的数,定点数只能表示纯小数 B.浮点数的尾数越长,所表示的数的精度就越高 C.定点数可表示的数值范围总是大于浮点数所表示的…

交换机的硬件故障问题总结

交换机故障一般可以分为硬件故障和软件故障两大类。硬件故障主要指交换机电源、背板、模块和端口等部件的故障,具体可以分为以下几类。接下来就由飞畅科技来为大家详细介绍下交换机的硬件故障问题,感兴趣的朋友就一起来看看吧! 一、电源故障…

[渝粤教育] 西南科技大学 线性代数 在线考试复习资料

线性代数——在线考试复习资料 一、单选题 1. A. B. C. D. 2.矩阵的特征值为( )。 A. B. C. D. A. B. C. D. A. B. C. D. A.3 B.4 C.1 D.2 A. B. C. D. A.3个方程,5个未知数 B.5个方程,3个未知数 C.5个方程,5个未知数 D.3个方程,3个未知数 A. B. C. D. A. B. C. D. A. B. C. D…

[渝粤教育] 西南科技大学 英语口语 在线考试复习资料

英语口语——在线考试复习资料 一、简答题 1.口语作文(至少200词) Popular Music. 2.口语复杂问答(每题至少50词) What do you do in your spare time? 3.口语复杂问答(每题至少50词) What characteristics do you think a good teacher should have? 4.口语复杂问答(每…

Spring Data Redis:Sentinel的高可用性

1.概述 为了使Redis具有高可用性,我们可以使用Spring Data Redis对Redis Sentinel的支持。 借助Sentinel,我们可以创建自动抵御某些故障的Redis部署。 Redis Sentinel还提供其他附带任务,例如监视,通知,并充当客户端的…

关于交换机和路由器的区别介绍

交换机(又名交换式集线器),是一种用于电(光)信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路。交换机的作用可以理解为将一些机器连接起来组成一个局域网。而路由器与交换机…

[渝粤教育] 西南科技大学 财务会计 在线考试复习资料(2)

财务会计——在线考试复习资料 一、单选题 1.下列各项中,不属于筹资活动产生的现金流量的是( )。 A.吸收权益性投资所收到的现金 B.收回债券投资所收到的现金 C.分配现金股利 D.借入资金所收到的现金 2.下列关于财务报表的说法,错误的是( )…

java中原生方法_Java中原生(native)函数的用法

1、原生(Native)函数的概念在Java程序中,可以使用由其他编程语言实现的函数,这种函数,在Java中被称之为原生(Native)函数。2、在Java程序中使用原生函数的优缺点1)优点A、在Java程序中,可以复用已由其他语言实现的各种库。可能已存…

什么是节点光端机?总线型光端机有哪些优势?

节点式光端机又称总线型光端机,其准确的定义是采用单/双纤链路式组网形式的图像传输系统,也被称为链路式光端机。那么,节点式光端机具体是什么呢?总线型光端机又有哪些优势呢?接下来我们就跟随飞畅科技的小编一起来详细…

[渝粤教育] 西南科技大学 高频电子线路 在线考试复习资料2021版

高频电子线路——在线考试复习资料2021版 一、单选题 1.直接调频电路的优点是( )。 A.载频稳定度高 B.能够获得较大的线性频偏 答案:看左边查询 2.调频信号,则调频指数(最大相偏)是( )。 A.3 B.10 C.1000 D.1 答案:看左边查询 3.在混频过程中,频率等于或接近于中频的干…

【渝粤教育】电大中专学前儿童语言教育 (11)作业 题库

作业视频教务托管,壹叁路路贰陆陆壹〇肆〇 下面哪个选项不是学前儿童语言获得理论( )。 A.先天与后天相互作用论 B.遗传决定论 C.先天决定论 D.后天环境论 错误 正确答案:左边查询 学生答案:A 2.语言是( )和思维的工具。 A.动作 B.声音 C. 交…

mysql 备份html数据_MySQL自动化生成HTML页面(导出数据)极限SQL编程-sql文件怎么打开...

今日客户要求表内的数据依据某种分组生成HTML页面进行展示,一般处理这种需求直接上编程工具就好了,从数据库里读取数据,根据规则生成字符串,最后将字符串写出到文件。由于需求比较急,作为数据库编程系列文章&#xff0…