07.07 根據指定的包名遍歷該包下的類名

根據項目需要,我近期學習如何根據包名遍歷該包下的路徑,在我的不懈努力下,我網上找到了一遍不錯的文章,稍微做處理,然後分享給大家,希望對大家有幫助。

文章來源: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>();/<object>/<object>

String packageName = packName;

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

Enumeration 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包下的文件結構

根據指定的包名遍歷該包下的類名

com.xt.model下的文件結構圖

2、測試運行,輸出結果如下:

根據指定的包名遍歷該包下的類名

運行結果圖

本文借鑑別人的技術分享,希望能對你們有所幫助,也希望大家支持我,我後面會有更多更好的技術跟大家分享!


分享到:


相關文章: