根据指定的包名遍历该包下的类名

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40480741/article/details/80956764

根据项目需要,我近期学习如何根据包名遍历该包下的路径,在我的不懈努力下,我网上找到了一遍不错的文章,稍微做处理,然后分享给大家,希望对大家有帮助。

文章来源:https://zhidao.baidu.com/question/590433618.html


package com.xt.test;

import java.io.File;

import java.net.URL;

import java.util.Enumeration;

public class Test{

public Test() {

getObjecsInPackage("com.xt.model");

}

public static void main(String[] args) {

new Test();

}

/**

* 根据指定的包,遍历其包下的类,并且输出

* @param packName 遍历该包下的类

*/

public static void getObjecsInPackage(String packName){

// Set<Object> objs = new HashSet<Object>();

String packageName = packName;

String packageDirName = packageName.replace(".", "/");

Enumeration<URL> dirs = null;

try {

dirs = Thread.currentThread().getContextClassLoader().getResources(packageDirName);

//迭代此Enumeration

while(dirs.hasMoreElements()){

URL url = dirs.nextElement();

File file = new File(url.getFile());

//把目录下的所有文件列出

String[] classes = file.list();

for(String className:classes){

className = className.substring(0, className.length()-6);

String qName = packageName+"."+className;

System.out.println("qName="+qName);

//如果有必要,可以创建对象,但是由于一般一个包

//下有很多个类,所有建议把创建的对象放到一个集合里,

//在这里不就演示了(注释掉的代码在下面)

// Object obj = Class.forName(qName).newInstance();

// objs.add(obj);

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

}


运行结果:

1、com.xt.model包下的文件结构


2、测试运行,输出结果如下:

本文借鉴别人的技术分享,希望能对你们有所帮助,也希望大家支持我,我后面会有更多更好的技术跟大家分享!

猜你喜欢

转载自blog.csdn.net/weixin_40480741/article/details/80956764
今日推荐