孙卫琴《Java面向对象编程》配套PPT--java_base10_refl.ppt

孙卫琴《Java面向对象编程》配套PPT--java_base10_refl.ppt

ID:51588162

大小:76.50 KB

页数:13页

时间:2020-03-24

孙卫琴《Java面向对象编程》配套PPT--java_base10_refl.ppt_第1页
孙卫琴《Java面向对象编程》配套PPT--java_base10_refl.ppt_第2页
孙卫琴《Java面向对象编程》配套PPT--java_base10_refl.ppt_第3页
孙卫琴《Java面向对象编程》配套PPT--java_base10_refl.ppt_第4页
孙卫琴《Java面向对象编程》配套PPT--java_base10_refl.ppt_第5页
资源描述:

《孙卫琴《Java面向对象编程》配套PPT--java_base10_refl.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、反射JavaReflectionApi的作用检查运行时的对象动态更新字段调用方法反射主要的类:java.lang.Class;java.lang.reflect.Method;java.lang.reflect.Field;java.lang.Constructor检查运行时的对象1.通过对象的getClass方法,获得Class对象2.通过Class对象的getMethods()方法获得所有的方法3.通过Class对象的getFields()方法获得所有的public字段Personperson=newPerson();ClasspersonClass=person.getClass(

2、);Method[]personMethords=personClass.getMethods();Field[]personFields=personClass.getFields();动态访问对象的字段Field提供了1.getXXX(Object)方法,获得特定对象的某个字段的值2.setXXX(Object,XXX)来设置特定对象的个字段的值以上XXX表示数据类型动态访问对象的字段Personperson=newPerson("linda",10);ClasspersonClass=person.getClass();FieldageField=personClass.getFi

3、eld("age");//设定person的年龄ageField.set(person,newInteger(12));//获得person的年龄intage=ageField.getInt(person);System.out.print(age);参看reflect.sample.AccessPersonFields类动态访问对象的方法Method提供了Objectinvoke(Objectobj,Object[]args)方法,调用某个特定对象的方法,如果参数或返回类型为基本类型,将自动转化为相应的包装类对象动态访问对象的方法Personperson=newPerson("lind

4、a",10);ClasspersonClass=person.getClass();Class[]parameterClass=newClass[1];parameterClass[0]=Class.forName("int");MethodsetAgeMethod=personClass.getMethod("setAge",parameterClass);parameterClass=newClass[0];MethodgetAgeMethod=personClass.getMethod("getAge",parameterClass);//设定person的年龄Objectpara

5、ms[]=newObject[1];params[1]=newInteger(12);setAgeMethod.invoke(person,params);//获得person的年龄ObjectageObject=getAgeMethod.invoke(person,newObject[0]);intage=((Integer)ageObject).intValue();System.out.print(age);参看reflect.smple.AccessPersonMethods类动态访问构造方法Constructorc=Person.class.getDeclaredConstru

6、ctor(newClass[]{String.class,int.class});Personp=(Person)c.newInstance(newObject[]{"linda",newInteger(10)});System.out.println(p);参看reflect.smple.ConstructPerson类动态代理动态代理是指客户通过代理类来调用其它对象的方法动态代理使用场合:调试远程方法调用动态代理客户代理对象接口代理接口动态代理步奏1.创建一个实现接口InvocationHandler的类,它必须实现invoke方法publicObjectinvoke(Objectt

7、heProxy,Methodmethod,Object[]params)throwsThrowable{try{Objectretval=method.invoke(targetObj,params);//PrintouttheresultSystem.out.println(retval);returnretval;}catch(Exceptionexc){}}参见DebugProxy.java动态代理步奏2.创建被代理的类以及接

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。