Java遍历包中所有类

news/2024/7/6 4:25:14 标签: java, Java, JAVA, package, , 所有类, 遍历

由于项目需要,我想获得某下所有的类(括该的所有子),从网上找了找,没有什么能用的,即使找到了写的也不怎样,效率低下。索性就自己写吧,正好也锻炼锻炼写代码的功底。特此分享出来,希望能帮到大家......

JAVA.html" title=java>java">package com.itkt.mtravel.hotel.util;

import JAVA.html" title=java>java.io.File;
import JAVA.html" title=java>java.util.ArrayList;
import JAVA.html" title=java>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.html" title=Java>Java遍历jar所有类-后续 http://blog.csdn.net/wangpeng047/article/details/8202353

JAVA.html" title=Java>Java遍历所有类-终续 http://blog.csdn.net/wangpeng047/article/details/8206427


http://www.niftyadmin.cn/n/1661381.html

相关文章

国赛经验总结

国赛取得第四名&#xff0c;不是很理想&#xff0c;反思总结一些原因&#xff0c;心得&#xff0c;供未来的自己吸取经验。 一、客观原因&#xff1a; 1、 比赛前&#xff0c;主车已经封车&#xff0c;但因为驱动板可能设计有点问题&#xff0c;让队友重新画了一块&#xff0…

那点随心的感慨

我这人很少爱表达自己的感情&#xff0c;所以博客里也几乎没有哪篇文章是讨论感情的&#xff0c;不过技术文章这多了&#xff0c;发现偶尔转换下文章风格也有点意思。最近我的情况不是很好&#xff0c;处在左右为难的境地。 工作不是很顺利&#xff0c;总是在换工作找工作的&a…

RecyclerView跨行自适应调整

一、先看效果 二、实现原理 重写RecyclerView.LayoutManager&#xff0c;在onLayoutChildren时&#xff0c;重新测量计算布局&#xff0c;当多个item的宽度之和大于屏幕宽度时就换行&#xff0c;直接看以下代码&#xff0c;注释很详细&#xff1a; 重写的LayoutManager Auto…

Myeclipse配置servlet和jsp模板代码

Myeclipse配置servlet和jsp模板代码 注意&#xff1a;修改时请关闭MyEclipse 1.在myeclipse安装目录中搜索&#xff1a;com.genuitec.eclipse.wizards_9.0.0.me201103012021文件&#xff0c;版本不同后面的9.0.0.me201103012021可能会不同。 2. 打开Jar包中的Templates文件夹既…

Java遍历jar包所有类-后续

之前&#xff0c;我曾经写过一篇Java遍历包中所有类&#xff0c;但经过一名网友提醒发现&#xff0c;只能适用于项目src中的包&#xff0c;当包在jar里时就无法遍历jar里的类。就此我针对代码进行了细化&#xff0c;功能得到进一步的完善。 在分享源码之前&#xff0c;先说说我…

LZW数据压缩算法的原理分析

我希望通过本文的介绍&#xff0c;能给那些目前不太了解lzw算法和该算法在gif图像中应用&#xff0c;但渴望了解它的人一些启发和帮助。抛砖引玉而已&#xff0c;更希望园子里面兄弟提出宝贵的意见。1.LZW的全称是什么? Lempel-Ziv-Welch (LZW).2. LZW的简介和压缩原理是什么…

Android网络编程(六):HTTPS

一、简介 HTTPS 是一种通过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信&#xff0c;但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的&#xff0c;是提供对网站服务器的身份 认证&#xff0c;保护交换数据的隐私与完整性。若是不了解HTTP&#xff0c;请看…

Java遍历包中所有类-终续

上一篇中&#xff0c;我向大家讲述了遍历jar包时所遇到的困难&#xff0c;本篇将向大家分享最终版代码。 package com.itkt.mtravel.hotel.util;import java.io.File; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; import java.util.En…