java 反射机制学习

来源:互联网 发布:刺客袖剑淘宝 编辑:程序博客网 时间:2024/06/04 17:57

内容出自:http://www.cnblogs.com/lzq198754/p/5780331.html

获取Class类对象:

class1 = Class.forName("net.xsoftlab.baike.TestReflect");//通过类路径class2 = new TestReflect().getClass();//通过一个类对象来获取类class3 = TestReflect.class;//直接通过该类的class来获取

取得父类:

Class<?> parentClass = clazz.getSuperclass();//其中clazz为初始化的类对象


获取类的接口

Class<?> intes[] = clazz.getInterfaces();


实例化类对象:

User user = (User) class1.newInstance();


获取类的构造函数:

Constructor<?> cons[] = class1.getConstructors();

获取构造函数的的参数:

Class<?> clazzs[] = cons[i].getParameterTypes();


获取类的全部属性:(不算main方法)

Field[] field = clazz.getDeclaredFields();

获取权限修饰符:(private、static、final...)

int mo = field[i].getModifiers();
String priv = Modifier.toString(mo);
获取属性类型:(返回值类型)

Class<?> type = field[i].getType();

type.getName()

获取属性名:

field[i].getName()


获取类的全部方法:

Method method[] = clazz.getMethods();//这个获取到很多一些看不见的方法

获取方法的返回值:

Class<?> returnType = method[i].getReturnType();

获取方法的参数:

Class<?> para[] = method[i].getParameterTypes();

获取方法的错误(Exception)

Class<?> exce[] = method[i].getExceptionTypes();


反射机制获取某个类的方法:

Method method = clazz.getMethod("reflect1");//获取reflect1的方法,即使改方法不存在,编译也会通过,只有运行时才会去执行该方法
method.invoke(clazz.newInstance());//实例化(执行)该方法

反射机制获取某个类的属性:

Field field = clazz.getDeclaredField("proprety");//通过属性名来获取该属性
field.setAccessible(true);//即使该属性为私有照样获取
field.set(obj, "Java反射机制");//设置该属性的值

原创粉丝点击