黑马程序员技术交流社区
标题: 想请教一下,关于javaBean方面的 [打印本页]
作者: 小马过河 时间: 2013-12-4 00:05
标题: 想请教一下,关于javaBean方面的
看了张老师的视频,有些糊涂。讲解javaBean的开始说这是一个特殊的类,类的属性是其去掉set和get后的名字。而成员变量是不可见的。
结果他举例直接都是调用成员方法x值。
感觉好矛盾好矛盾,越看越晕。有人能讲解下javaBean的应用场景么,以及它的操作流程?
不要求代码,有比较明晰的思路就行哈{:soso_e117:}
作者: quan23355 时间: 2013-12-4 08:51
本帖最后由 quan23355 于 2013-12-4 08:58 编辑
在一个Reflectpoint类中,我们可以把它当作一个普通类来操作,比如该类对象调用getX方法可以得到该对象私有成员属性x的值。但我们仔细看一下该类,你会发现有一种规律,比如:setX(中文意思是设置X)、getX(中文意思是获取X值),没错,这种规律符合setter,getter命名规范,这时我们就可以把这种类称为javaBean类,由这种规范推算出来的成员属性称之为javaBean属性,至于java类内部的成员属性是怎样的我们根本不用去管,也管不了,因为那些都是私有的成员变量。当一个类一旦成为javaBean类时,我们就可以用一些特殊的方式去操作它,比如内省。
使用简单内省操作javaBean类(认真看注释,相信你会看明白的)
- calss Reflectpoint{
- private int x; //私有成员属性
- private int y; //私有成员属性
- Reflectpoint(int x,int y){//带参构造函数
- this.x=x;
- this.y=y;
- }
- //setter,getter方法。
- public void setX(int x){//设置x的值
- this.x=x;
- }
- public int getX(){//获取x的值
- return this.X
- }
- public void setY(int y){//设置y值
- this. y= y
- }
- public int getY(){//获取y值
- return this.Y;
- }
- }
复制代码
- public class IntroSpectorTest
- {
- public static void main(String[] args) throws Exception {
- ReflectPoint pt1 = new ReflectPoint(3,5);
- String propertyName = "x";//定义一个我们认为可能是javaBean的属性x(由公有方法可以得出),
- //"x"-->"X"-->"getX"-->MethodGetX-->
- PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());//创建一个指定javaBean类ReflectPoint,指定属性(x)的javaBean属性对象。
- Method methodGetX = pd.getReadMethod();//获取属性对应的getX方法
- Object retVal =methodGetX.invoke(pt1); //执行该方法,用指定的对象去调用该方法,相当于pt1.getX(),
- System.out.println(retVal);//创建pt1对象时传入的x值为3,因此打印3
- PropertyDescriptor pd2 = new PropertyDescriptor(propertyName,pt1.getClass());
- Method methodSetX = pd2.getWriteMethod(); //获取setX方法
- methodSetX.invoke(pt1,7); 执行setX方法,相当于pt1.setX(7);
- System.out.println(pt1.getX);//输出7,设置成功。
- }
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |