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

java 所有子类_java 查找类的所有子类相关推荐

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

    package _02; import java.io.File; import java.net.URL; public class MainTest_FindAllSubClass { publi ...

  2. java异常判断_Java异常类

    异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常. ...

  3. java继承孙子类_Java:类与继承

    Java:类与继承 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态 这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关 ...

  4. java inputstream子类_Java InputStream 类

    Java InputStream 类 在本教程中,我们将通过一个示例来学习Java InputStream类及其方法. java.io包的InputStream类是一个抽象超类,它表示字节的输入流. ...

  5. Java两同_java:一个类实现的两个接口里都有同一个方法(名),怎么处理?

    不一定,关键要看子类是否是抽象类. 如果子类是非抽象类,则必须实现接口中的所有方法: 如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在! 1.抽象类定义 抽象类往往用来 ...

  6. java printwriter实例_Java PrintWriter 类

    Java PrintWriter 类 在本教程中,我们将通过示例来学习Java PrintWriter及其print()和printf()方法. java.io包的PrintWriter类可用于以通常 ...

  7. java file 工具_JAVA文件类工具

    FileUtil package cn.jiangzeyin.util.file; import org.springframework.util.Assert; import java.io.*; ...

  8. java filewriter 编码_Java FileWriter 类

    Java FileWriter 类 在本教程中,我们将借助示例学习Java FileWriter及其方法. java.io包的FileWriter类可用于将数据(以字符为单位)写入文件. 它继承了Ou ...

  9. python定义一个类和子类_Python定义类、定义子类以及super()函数的使用

    代码实验展示: # 继承关系 object -> Person -> Student -> SchoolBoy # python2的语法: # class Person(object ...

最新文章

  1. 在C++中加载TorchScript模型
  2. numpy rollaxis理解
  3. 39 | 案例篇:怎么缓解 DDoS 攻击带来的性能下降问题?
  4. 按功能而不是按层打包课程
  5. vue watch 第一次不执行_Vue 实现前进刷新,后退不刷新的效果
  6. java 最快平衡几个值_Java 集合框架面试问题集锦
  7. 浅谈数据库设计二三事
  8. idea - Error during artifact deployment. See server log for details.
  9. mysql报错:You must at least set –server-id to enable either a master or a slave
  10. php if变量满足数组,在php中使用if()查看数组中的日期是否等于变量中存储的日期...
  11. DarkMode 设置关闭 iOS 13, 适用于 XCode 11, XCode 10
  12. 第六章 jQuery 选择器——课后作业:
  13. excel 字符串连接和求差集
  14. 计算机acm国际排名,acm(中国大学acm综合排名)
  15. 2021宇哥八套卷总结—第三套试卷分析
  16. 从零搭建个人资讯系统1
  17. 呕心沥血踩坑之:外星人M17电脑在一块硬盘上成功安装Windows与Ubuntu16.04双系统
  18. 恭喜惠州市靖元五金塑胶制品设计有限公司与华信环球再次达成合作!
  19. UIdemo 制作一个简单的iPhone相册
  20. Mac OS制作Windows10启动盘

热门文章

  1. Java Web项目的保存和刷新
  2. Maven发布到Nexus
  3. REST与Apache Camel
  4. 跨站点脚本(XSS)和预防
  5. MOXy作为您的JAX-RS JSON提供程序–客户端
  6. MyEclipse 的 TCP/IP Monitor 的使用
  7. python36_第36 p,就这几个方法,Python中文件的操作
  8. mysql按加号没反应_请各位大哥给小老弟解疑答惑一下 为什么点击加号没有反应?感谢...
  9. 小米摄像头有onvif协议_监控摄像头完好但图像不行,肯定逃不过这10个问题
  10. python selenium循环判断元素是否存在_检查Python Selenium是否存在元素