java反射获取包下所有类,java反射获取类的方法

http://www.itjxue.com  2023-01-15 07:04  来源:未知  点击次数: 

java 获取指定包下类的实例(100分)

1.首先,把你指定的包,转换成本地路径

2.列出本地路径下的所有类,并把.class去掉,再拼接上 包名

3.根据上面获取的类的全限定名,依次利用Class.forName(StringName).newInstance()来创建实例

4.把创建好的实例添加到集合中。

Code:

/***********

* 根据包名来获取此包下所有的类名及其实例

* @param packName

* @return

*/

public static SetObject getObjectsInPackage(String packName){

SetObject objs = new HashSetObject();

String packageName = packName;

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

EnumerationURL 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();

//循环此数组,并把.class去掉

for(String className : classes){

className = className.substring(0,className.length()-6);

//拼接上包名,变成全限定名

String qName = packageName+"."+className;

//如有需要,把每个类生实一个实例

Object obj = Class.forName(qName).newInstance();

//添加到集合中

objs.add(obj);

}

}

} catch (Exception e) {

e.printStackTrace();

}

return objs;

}

java如何通过反射获取包中所有的类?

先通过IO,定位到这个包

通过File.list得到一个包含这个包下所有class的文件的数组。

循环这个数组,用包名拼接每一个遍历出来的文件的名字,得到每一个完整的类名(即,包名加类名)

通过class.forname反射得到每一个类实例

java中如何通过反射获取一个.java文件中的所有类。

对象.gerClass().getName()就是了,对象时谁的,最后就是谁的全名,不会有内部类的区别

如果没有对象那就是:类名.class.getName(),不过这样是闲的无聊,有类名,再返回字符串形式的类名

(责任编辑:IT教学网)

更多

推荐Javascript/Ajax文章