你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / 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; 
    } 

没什么特别复杂的,看看基本上就能懂的。给入任意包的命名空间,就能返回该包下的所有类。自我感觉还不错,简单易用,通用和扩展性也不错。其实写代码,在有熟练的基本功之后,剩下的就是组装的思路了。
  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089