欢迎来到天天文库
浏览记录
ID:43313136
大小:133.54 KB
页数:7页
时间:2019-09-30
《黑马程序员-javabean类与java内省总结》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一、JavaBean类概述1、JavaBean是一种特殊的java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种规则。2、如果要在两个模块之间传递多个信息,可以将这些信息封装到一个JavaBean中,这种JavaBean的实例对象通常称之为值对彖(ValueObject,简称V0)。这些信息在类屮用私有字段来存储,如果读取或设置这些字段的值,则需要相应的方法来访问,如getter方法和setter方法。3、JavaBean的属性是根据其中的getter方法和setter方法来确定的,而不是根据其中的成员变量。举个例子,如
2、果某个JavaBean类有方法setld()与getld(),那么我们认为它有个叫做id的属性,至于它内部实际封装的私有成员变量叫什么则不必关心。4、根据方法名推断属性名的规则:1)去掉set/get前缀,剩余部分就是属性名。2)若剩余部分的第二个字母为小写,则将剩余部分的首字母改为小写;若其为大写,则剩余部分的首字母仍为大写。举例,setld()的属性名:id;isLast()的属性名:last;setCPU的属性名:CPU;5、一个符合JavaBean特点的类可以当作普通类一样进行使用,但把它当作JavaBean类使用会带来一些额外好处:DjavaEE开发中
3、,经常会使用到JavaBean类。很多环境要求按JavaBean方式进行操作,别人都这么用和要求这么做,我们也别无选择。2)JDK中提供了对JavaBean进行操作的一些API,这套API就称为内省。使用内省操作JavaBean比使用普通类的方式更加方便。二、内省1、内省的概念内省,英文名introspector,意思是自省、反省。它主要用于对JavaBean类进行操作。2、通过内省对JavaBean进行操作12・34.例简单的操作方式publicclassReflectPointprivateintx;privateinty;7.publicReflectPo
4、int(intx^inty){8.super();9.this・x=x;10.this.y=y;11.}12.13・publicintgetX(){14.returnx;15-}16.publicvoidsetX(intx){17.this.x=x;18.}19.publicintgetY(){20.returny;21.}22.publicvoidsetY(inty){23・this.y=y;24.}25.}[java]viewplaincopy11.packagecom.cn•itcast;2.3.import4-import卜import6・importk
5、import8.import9-10.public11•java•beans•Beanlnfo;java•beans•IntrospectionException;java•beans•Introspector;java•beans•PropertyDescriptor;java•lang.reflect•InvocationTargetException;java•lang•reflect•Method;classIntrospectorTest{12.publicstaticvoidmain(String[]args)throwsException{13.R
6、eflectPointrp=newReflectPoint(3,5);14•StringpropertyName=”x";15.16.//通过普通反射方式获取属性x的值时,需要经历下而儿个步骤,十分繁琐17・//“x“・・>“X“・・>ngetXH-->methodGetX-->x18.19・//通过内省,获取x属性的值20.PropertyDescriptorpd=newPropertyDescriptor(propertyName,rp.getClass());//通过属性名,获取该对象rp下该属性x的属性描述器21.MethodmethodGetX=pd.
7、getReadMethod();//通过属性描述器,获取该属性x的读方法,即getter方法20.ObjectretVal=methodGetX・invoke(rp);//利用反射调用该getter方法,获取属性x的值21.System.out.println(netVal);24•25.〃通过内省,设置x属性的值26.MethodmethodSetX=pd.getWriteMethod();//通过属件•描述器,获取该属性x的打方法,BPsetter方法27.methodSetX.invokeCrpj7);////利用反射调用该setter方法,设置属性x的值
8、28•System•ou
此文档下载收益归作者所有