Java遍历包中所有类
由于项目需要,我想获得某包下所有的类(包括该包的所有子包),从网上找了找,没有什么能用的,即使找到了写的也不怎样,效率低下。索性就自己写吧,正好也锻炼锻炼写代码的功底。特此分享出来,希望能帮到大家......
package com.itkt.mtravel.hotel.util;import java.io.File;
import java.util.ArrayList;
import java.util.List;public class PackageUtil {public static void main(String[] args) {String packageName = "com.itkt.mtravel.hotel";List<String> classNames = getClassName(packageName);for (String className : classNames) {System.out.println(className);}}public static List<String> getClassName(String packageName) {String filePath = ClassLoader.getSystemResource("").getPath() + packageName.replace(".", "\\");List<String> fileNames = getClassName(filePath, null);return fileNames;}private static List<String> getClassName(String filePath, List<String> className) {List<String> myClassName = new ArrayList<String>();File file = new File(filePath);File[] childFiles = file.listFiles();for (File childFile : childFiles) {if (childFile.isDirectory()) {myClassName.addAll(getClassName(childFile.getPath(), myClassName));} else {String childFilePath = childFile.getPath();childFilePath = childFilePath.substring(childFilePath.indexOf("\\classes") + 9, childFilePath.lastIndexOf("."));childFilePath = childFilePath.replace("\\", ".");myClassName.add(childFilePath);}}return myClassName;}
}
没什么特别复杂的,看看基本上就能懂的。给入任意包的命名空间,就能返回该包下的所有类。自我感觉还不错,简单易用,通用和扩展性也不错。其实写代码,在有熟练的基本功之后,剩下的就是组装的思路了。
============友情链接============
Java遍历jar包所有类-后续 http://blog.csdn.net/wangpeng047/article/details/8202353
Java遍历包中所有类-终续 http://blog.csdn.net/wangpeng047/article/details/8206427
Java遍历包中所有类相关推荐
- Java遍历包中所有类包括jar包(完整转载)
第一部分转自 :http://blog.csdn.net/wangpeng047/article/details/8124390 第二部分转自:http://blog.csdn.net/wangpen ...
- Java遍历包中所有类-终续
上一篇中,我向大家讲述了遍历jar包时所遇到的困难,本篇将向大家分享最终版代码. package com.itkt.mtravel.hotel.util;import java.io.File; im ...
- Java遍历包中所有类(完整转载:-))
第一部分转自 :http://blog.csdn.net/wangpeng047/article/details/8124390 第二部分转自:http://blog.csdn.net/wangpen ...
- java调用包中的类_java调用另一个包中的类的方法
java调用另一个包中的类的方法 发布时间:2020-05-18 15:04:40 来源:亿速云 阅读:199 作者:小新 今天小编给大家分享的是java调用另一个包中的类的方法,相信很多人都不太了解 ...
- 关于java同步包中ConcurrentLinkedQueue类的深入分析与理解
一,官方描写叙述 一个基于连接节点的无界线程安全队列.这个队列的顺序是先进先出.队列头部的元素是留在队列中时间最长的,队列尾部的元素是留在队列中时间最短的.新元素被插入到元素的尾部,队列从队列的头部检 ...
- java同一个包中,类之间的的调用
如果是静态方法,直接 类名.方法名即可,如果是非静态方法,则需new一个对象出来,然后用对象.方法名调用 如: public class A{ public static void T(){ Syst ...
- java 扫描类_Java扫描指定包中所有类
1. 扫描类 import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.n ...
- Throwable是java.lang包中一个专门用来处理异常的类
答:Throwable是java.lang包中一个专门用来处理异常的类.它有两个子类,即Error 和Exception,它们分别用来处理两组异常. Error用来处理程序运行环境方面的异常,比如,虚 ...
- 6 日期字符串转日期_Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类...
因为Jdk7及以前的日期时间类的不方便使用问题和线程安全问题等问题,2005年,Stephen Colebourne创建了Joda-Time库,作为替代的日期和时间API.Stephen向JCP提交了 ...
最新文章
- SBB:不同植被土壤中细菌古菌的群落分布模式比较
- python编程100例头条-今日头条python面试题之编程篇
- linux 修改系统时区和时间
- C++实现array right rotation数组右旋转(附完整源码)
- iview table 方法若干
- 【前端学习笔记】JavaScript + jQuery + Vue.js + Element-UI
- java epub 删除一页_java如何实现批量删除pdf指定的页数
- 7-4 mmh学长与出栈 (20分)
- 搜人2013笔试题(java)
- c语言中八进制输出的格式说明符,C 的输入输出格式说明符讲解
- 解决PHP提示Warning: Division by zero in错误
- C++函数模板及隐式实例化、显式实例化、显式具体化、模板重载
- 国防科技大学计算机考研资料汇总
- T(n)=2T(n/2)+n的解为T(n)=O(nlogn)的求解
- PhotoSweeper X for Mac(重复照片快速清理软件)
- G003-186-07
- 阿里工作9年,熬到技术总监的我,选择离职:想给还在努力的你提个醒……
- RK3588 ssh Failed to start OpenBSD Secure Shell server 以及E: Sub-process /usr/bin/dpkg returned无法下载软件
- gcc, build 错误: error: macro “__kernel_fpu_end“ passed 1 arguments, but takes just 0
- 浅谈视觉外观检测系统中存在哪几大技术难点?