import java.io.File;

import java.io.IOException;

import java.net.URL;

import java.util.ArrayList;

import java.util.List;

public class ClassUtil {

/**

* 获取同一路径下所有子类或接口实现类

*/

public static List> getAllAssignedClass(Class> cls) throws IOException,

ClassNotFoundException {

List> classes = new ArrayList>();

for (Class> c : getClasses(cls)) {

if (cls.isAssignableFrom(c) && !cls.equals(c)) {

classes.add(c);

}

}

return classes;

}

/**

* 取得当前类路径下的所有类

*/

public static List> getClasses(Class> cls) throws IOException,

ClassNotFoundException {

String pk = cls.getPackage().getName();

String path = pk.replace('.', '/');

ClassLoader classloader = Thread.currentThread().getContextClassLoader();

URL url = classloader.getResource(path);

return getClasses(new File(url.getFile()), pk);

}

/**

* 迭代查找类

*

*/

private static List> getClasses(File dir, String pk) throws ClassNotFoundException {

List> classes = new ArrayList>();

if (!dir.exists()) {

return classes;

}

for (File f : dir.listFiles()) {

if (f.isDirectory()) {

classes.addAll(getClasses(f, pk + "." + f.getName()));

}

String name = f.getName();

if (name.endsWith(".class")) {

classes.add(Class.forName(pk + "." + name.substring(0, name.length() - 6)));

}

}

return classes;

}

}

java特殊类型_java中如何查找某个特定类型作为形参的方法相关推荐

  1. double java 精度丢失_java中double和float精度丢失问题及解决方法

    在讨论两位double数0.2和0.3相加时,毫无疑问他们相加的结果是0.5.但是问题总是如此吗? 下面我们让下面两个doubles数相加,然后看看输出结果: @Test public void te ...

  2. java中两种异常类型_Java中的三种异常类型

    java中两种异常类型 Errors are the bane of users and programmers alike. Developers obviously don't want thei ...

  3. java 中entry类型_java中的Entry是什么类型

    publicstaticinterfaceMap.Entry的API介绍如下: 映射项(键-值对).Map.entrySet方法返回映射的collection视图,其中的元素属于此类.获得映射项引用的 ...

  4. java 获取星期几_java中获取日期是星期几的两种方法

    java中取得指定日期是星期几可以采用下面两种方式取得日期是星期几:(推荐:java视频教程) 1.使用Calendar类//根据日期取得星期几 public static String getWee ...

  5. java 数组参数_java中 数组可以作为形式参数传递到调用的方法中吗?要怎么操作?...

    展开全部 可以,操作代码如下: public class ArrTest{ public static void doTest(String[] args){ for(int i=0;i System ...

  6. java wait 参数_java中wait()和join()方法的区别是什么

    java中wait()和join()方法的区别是:存在不同的java包中:wait()方法用于线程间通信,它所施加的等待状态的线程可以被启动:join()方法用于在多个线程之间添加排序,它所施加的等待 ...

  7. java ref 应用类型_Java中的四种引用类型比较

    1.引用的概念 引用这个概念是与JAVA虚拟机的垃圾回收有关的,不同的引用类型对应不同的垃圾回收策略或时机. 垃圾收集可能是大家感到难于理解的较难的概念之一,因为它并不能总是毫无遗漏地解决Java运行 ...

  8. java 内部变量_java 中的内置数据类型

    1,  基本数据类型 Java是强类型语言, 对于每一种数据都定义了类型,基本数据类型分为数值型,字符型,布尔型.数值型又分为了整型和浮点型. 整型又分为byte, int, short long. ...

  9. java 无符号 类型_java中符号类型和无符号类型的问题分析

    一 参考博文 二 java中的无符号数和有符号数 在计算机中,可以区分正负的类型,称为有符号类型,无正负的类型,称为无符号类型. 使用二进制中的最高位表示正负 计算机中用补码表示数值:另外,用二进制的 ...

最新文章

  1. 头像秒变像素风,宅男大叔自学AI打造大师级水准,火爆推特
  2. 如何查看已安装的CentOS版本信息
  3. java http头信息
  4. python 随机取列表值 重复_python怎么随机取列表的值
  5. SAP Cloud for Customer Cloud Application Studio的Trace功能
  6. UI5 repository mapping and Component-preload.js UI5RepositoryPathMapping.xml
  7. sqlyog如何设置.时提示字段名_雷神新用户手册:拿到新电脑时如何简易设置参数!...
  8. java 和javafx_Java,JavaFX的流利设计风格文本字段和密码字段
  9. leetcode 45. 跳跃游戏 II 思考分析
  10. php mysql 权重_PHP对MySql的常用操作
  11. shell基础——变量定义
  12. 鸿蒙系统是不是推迟发布了,鸿蒙系统2.0来了,华为Mate40推迟发布
  13. 超好用的IDEA插件汇总
  14. LVM与软RAID整理笔记
  15. 电脑文件分区壁纸--超级马里奥、樱桃小丸子主题
  16. mac更新完后读取不出移动硬盘的问题解决
  17. javaScript前端上传文件到腾讯云(对象存储)
  18. 计算机端口连接失败,电脑Telnet命令提示在端口23连接失败的解决办法
  19. ios端 QQ 内语音通话录制-5823错误原因细究
  20. 【Kotlin-Room】 cannot pick a constructor since multiple constructors are suitable

热门文章

  1. 基于JAVA+SpringMVC+MYSQL的网上选课系统
  2. 利用.NET绘图技术制作水晶按钮控件(转)
  3. python 面向对象 析构方法
  4. FileReader图片上传并预览
  5. 关于MD5对用户密码不进行明文保存的问题
  6. Centos7 密码重置
  7. virtualbox 中ubantu虚拟机范文win7文件夹
  8. 落地数据和不落地数据
  9. Python稳基修炼之计算机等级考试易错概念题6(含答案)
  10. 打开文件管理器_会声会影影片配置文件管理器