Java反射机制

来源:互联网 发布:java基础教程pdf下载 编辑:程序博客网 时间:2024/05/03 00:22

一、反射的概念

1.反射是指程序在运行时,可以通过反射机制拿到任何一个类的内部所有信息。
2.可以获得类的所有属性信息,包括私有属性,并对其进行操作
3.可以获得对象所对应的类
4.可以拿到本类,或父类中的方法,并且对其进行操作。

二、Class对象的使用

常用方法:

getName:获得类对应的名称getDeclaredFields:获得类中所有参数  私有的也可以获取到getFields:只能获取共有的getDeclaredMethod:获得类中的所有方法getContructors:获得类中的构造方法newInstance:实例化对象

获取class对象的3中常用方式


1.通过forName方式

//path:类对应的完整路径=包名加类名Class demo1=Class.forName("com.tjpld.model.Book");

2.getClass方式

Book demo2=new Book();demo2.getClass();

3.类名.Class方式

//直接通过类名.ClassClass demo3=Book.class;Book  book=demo3.newIntances();

三、Field对象—-Reflect包

用于表示类中,接口中所有属性对象的一个类

getName:获得属性的名称getType:获得属性的类型getObject obj):取得obj对象中这个属性的值setObject obj,Object value):向obj这个对象插入一个value值setAccessible(true):启用禁用访问权限

使用方法

1.testDemo(Class class){Field fields[]=class.getDeclaredFields()  for(Field ff:fields){     system.out.prinft(ff.getName()+"/"+ff.getType());  }}2. testDemo2(Object obj){  Class class=obj.getClass();  Field fields[]=class.getDeclaredFields()  for(Field ff:fields){   ff.setAccess;     system.out.prinft(ff.getName()+"/"+ff.get(obj));//get方法并不能直接拿这个对象中的值,而是要先启用拿到值的权限  }}

Method方法的使用

常用方法

getName:方法名称getReturnType:方法的返回值类型invoke(Object obj,Object..args):根据object对象调用方法getParamterType:得到参数类型

使用方法:

showUser(Object obj){ Class cls=obj.getClass(); //方法名称 如果是多参数类型的方法 传值传入一个Class类型的数组Class[] cls={String.class,int.class} Method method=cls.getMethod("getName",String.class参数类型----没有用null); //调用多参数的方法 就传入一个object类型的数组 method.invoke(obj,参数----没有就new Object[0])}
0 0
原创粉丝点击