2 u012131702 u012131702 于 2014.11.30 13:29 提问

java实现遍历某个包下的Class,注意不是自己写的包。是Java自身的吧。如:java.io

java实现遍历某个包下的Class,注意不是自己写的包。是Java自身的吧。如:java.io包下的所有Class和interface

2个回答

eagleyan
eagleyan   Rxr 2014.11.30 14:09
已采纳

简单说一下方法(假设你要找java.io包下的class)
String javaHome = System.getProperty("java.home");
JarFile jf = new JarFile(javaHome + "/jre/lib/rt.jar");
jf.stream().filter(je -> Pattern.compile("java/io/[A-Z]+[a-z].class").matcher(je.getName()).matches()).foreach(je -> {
... // Add your code here.
});
我这里用了Java 8的lambda语法;如果你不熟悉,基本方法就是便利rt.jar,找出所有的java/io/xxx.class

zhanglj166
zhanglj166   2014.11.30 23:49

参考:http://blog.csdn.net/wangpeng047/article/details/8124390
代码如下:

01.package com.itkt.mtravel.hotel.util;

02.

03.import java.io.File;

04.import java.util.ArrayList;

05.import java.util.List;

06.

07.public class PackageUtil {

08.

09. public static void main(String[] args) {

10. String packageName = "com.itkt.mtravel.hotel";

11.

12. List classNames = getClassName(packageName);

13. for (String className : classNames) {

14. System.out.println(className);

15. }

16. }

17.

18. public static List getClassName(String packageName) {

19. String filePath = ClassLoader.getSystemResource("").getPath() + packageName.replace(".", "\");

20. List fileNames = getClassName(filePath, null);

21. return fileNames;

22. }

23.

24. private static List getClassName(String filePath, List className) {

25. List myClassName = new ArrayList();

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. }

41.}

u012131702
u012131702 是java自身的包,这些都是自己的,有源文件,才行;要是要遍历java内部的包就不行了……
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Java遍历包中所有类(完整转载:-))
第一部分转自 :http://blog.csdn.net/wangpeng047/article/details/8124390 第二部分转自:http://blog.csdn.net/wangpeng047/article/details/8202353 第三部分转自:http://blog.csdn.net/wangpeng047/article/details/8202353
java 获取某一个包下的所有class 包括jar包中的文件
java 获取某一个包下的所有class 包括jar包中的文件
Java.io包中常用的类
Java.io包 Java.io.BufferedInputStream类实例 Java.io.BufferedOutputStream类使用例子 Java.io.BufferedReader类 Java.io.BufferedWriter类 Java.io.ByteArrayInputStream类 Java.io.ByteArrayOutputStream类 Java.io.Ch
Java 扫描指定包下的文件
第一种方法:利用google的guava扫描指定的包 StringBuffer value = new StringBuffer(); String packageName = "com.business.service.impl"; ClassPath classpath = ClassPath.from(ServiceMappingTest.class.getClassLoader());
java 获取某个包下的所有类名
java 获取某个包下的所有类名 (中文路径)
[Java] 遍历指定包名下所有的类(支持jar)
项目需要,仅做记录。 支持包名下的子包名遍历,并使用Annotation(内注)来过滤一些不必要的内部类,提高命中精度。 示例工程结构见下图.
Java如何扫描指定package下所有的类
在写一个MVC框架,需要从包中扫描出组件并注册到容器中,而JDK没有提供现成的从方法,只能自己实现。功能: 给定一个包名,编程得到该包(和其所有子包)下所有的类文件。如,输入包名com.myapp.util, 输出该包下类的全限定名com.myapp.util.StringUtils, com.app.util.ImageUtils等。思路: 有的web server在部署运行时会解压jar包,
扫描某个包下所有的类,输出所有使用了特定注解的类的注解值
扫描某个包下所有的类,输出所有使用了特定注解的类的注解值
java获取包下面的自定义注解
(1)该工程的目录结构如下 (2)annotation包下面自定义了两个注解。 Controller.java package com.huawi.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.a
java 扫描指定包下类(包括jar中的java类)
在很多的实际场景中,我们需要得到某个包名下面所有的类, 包括我们自己在src里写的java类和一些第三方提供的jar包里的类,那么怎么来实现呢? 今天带大家来完成这件事。 src下面的类如何获取: 首先,比较简单的是得到我们自己写的类,我们先来完成这个, 项目的结构图如下: 我故意创建了这么个比较复杂的项目结构,现在我们就来获取com.baibin包下所有的类,并且打印...