1700481299
根据一个父类取得所有子类,是一个非常好的工具类,其实现如代码清单34-8所示。
1700481300
1700481301
代码清单34-8 根据父类获得子类
1700481302
1700481303
public class ClassUtils{
1700481304
1700481305
//根据父类查找到所有的子类,默认情况是子类和父类都在同一个包名下
1700481306
1700481307
public static List<Class>getSonClass(Class fatherClass){
1700481308
1700481309
//定义一个返回值
1700481310
1700481311
List<Class>returnClassList=new ArrayList<Class>();
1700481312
1700481313
//获得包名称
1700481314
1700481315
String packageName=fatherClass.getPackage().getName();
1700481316
1700481317
//获得包中的所有类
1700481318
1700481319
List<Class>packClasses=getClasses(packageName);
1700481320
1700481321
//判断是否是子类
1700481322
1700481323
for(Class c:packClasses){
1700481324
1700481325
if(fatherClass.isAssignableFrom(c)&&!fatherClass.equals(c)){
1700481326
1700481327
returnClassList.add(c);
1700481328
1700481329
}
1700481330
1700481331
}
1700481332
1700481333
return returnClassList;
1700481334
1700481335
}
1700481336
1700481337
//从一个包中查找出所有的类,在jar包中不能查找
1700481338
1700481339
private static List<Class>getClasses(String packageName){
1700481340
1700481341
ClassLoader classLoader=Thread.currentThread()
1700481342
1700481343
.getContextClassLoader();
1700481344
1700481345
String path=packageName.replace(’.’,’/’);
1700481346
1700481347
Enumeration<URL>resources=null;
1700481348
[
上一页 ]
[ :1.700481299e+09 ]
[
下一页 ]