歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java遍歷包中所有類

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

  1. package com.itkt.mtravel.hotel.util; 
  2.  
  3. import java.io.File; 
  4. import java.util.ArrayList; 
  5. import java.util.List; 
  6.  
  7. public class PackageUtil { 
  8.      
  9.     public static void main(String[] args) { 
  10.         String packageName = "com.itkt.mtravel.hotel"; 
  11.  
  12.         List<String> classNames = getClassName(packageName); 
  13.         for (String className : classNames) { 
  14.             System.out.println(className); 
  15.         } 
  16.     } 
  17.  
  18.     public static List<String> getClassName(String packageName) { 
  19.         String filePath = ClassLoader.getSystemResource("").getPath() + packageName.replace(".", "\\"); 
  20.         List<String> fileNames = getClassName(filePath, null); 
  21.         return fileNames; 
  22.     } 
  23.  
  24.     private static List<String> getClassName(String filePath, List<String> className) { 
  25.         List<String> myClassName = new ArrayList<String>(); 
  26.         File file = new File(filePath); 
  27.         File[] childFiles = file.listFiles(); 
  28.         for (File childFile : childFiles) { 
  29.             if (childFile.isDirectory()) { 
  30.                 myClassName.addAll(getClassName(childFile.getPath(), myClassName)); 
  31.             } else { 
  32.                 String childFilePath = childFile.getPath(); 
  33.                 childFilePath = childFilePath.substring(childFilePath.indexOf("\\classes") + 9, childFilePath.lastIndexOf(".")); 
  34.                 childFilePath = childFilePath.replace("\\", "."); 
  35.                 myClassName.add(childFilePath); 
  36.             } 
  37.         } 
  38.  
  39.         return myClassName; 
  40.     } 

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

Copyright © Linux教程網 All Rights Reserved