Java遍歷包中所有類 – JAVA編程語言程序開發技術文章

由於項目需要,我想獲得某包下所有的類(包括該包的所有子包),從網上找瞭找,沒有什麼能用的,即使找到瞭寫的也不怎樣,效率低下。索性就自己寫吧,正好也鍛煉鍛煉寫代碼的功底。特此分享出來,希望能幫到大傢……
[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; 
    } 

沒什麼特別復雜的,看看基本上就能懂的。給入任意包的命名空間,就能返回該包下的所有類。自我感覺還不錯,簡單易用,通用和擴展性也不錯。其實寫代碼,在有熟練的基本功之後,剩下的就是組裝的思路瞭。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *