反射和范型的组合大量的应用在框架的架构中,通过对反射和范型的学习有助于理解框架的原理,以下是对反射过程的练习,本人菜鸟一个:
//给的只是个路径:com.test.reflex.Student,测试反射相关的info
String path="com.test.reflex.Student";
//Student student=new Student();
Class class1=Class.forName(path);
//使用反射的过程中一般根据string获取对应的class
//Class class1=student.getClass();
System.out.println("字段的info如下所示:");
Field[] field=class1.getDeclaredFields();//获取的是字段,包括私有的,getFields不能得到private修饰的
for(int i=0;i
System.out.println(class1.getName()+"中的字段有"+field[i]);
}
System.out.println("构造的参数如下所示:");
Constructor[] constructor=class1.getConstructors();
for(int i=0;i
System.out.println("构造的名字为:"+constructor[i].getName());
TypeVariable[] variable= constructor[i].getTypeParameters();
for (int j = 0; j < variable.length; j++) {
System.out.println(variable[i].getName());
}
}
System.out.println("方法的相关的信息");
Method[] methods=class1.getDeclaredMethods();
for (int i = 0; i < methods.length; i++) {
System.out.println("方法的名称:"+methods[i].getName());
Class[] variable= methods[i].getParameterTypes();
if(variable!=null){
System.out.println("执行啦");
for (int j = 0; j < variable.length; j++) {
System.out.println("参数的类型是:"+variable[j].getName());
}
}
Class class2= methods[i].getReturnType();
System.out.println("方法的返回类型是"+class2);
}
System.out.println("类的修饰符为:"+Modifier.toString(class1.getModifiers()));
//通过这种方式可以获取类的修饰符
System.out.println("该类所实现的接口为:"+class1.getInterfaces()[0].toString());
//假设它实现了一个接口
System.out.println("该类继承了那些类:"+class1.getSuperclass());
//在java中只有单继承,故getSuperclass可一获取其父类
}
java反射
最新推荐文章于 2016-12-14 14:33:02 发布