java bean与api,JavaBean和对应的内省API

JavaBean是具有一点规范的java类,

规范性:类的访问权限要是public,要有无参构造器、属性访问权限是private,访问属性要通过set、get方法以及一些命名的规范等等。

效益性:javabean可以在程序里被方便的重用,使开发效率提高。其他类则通过自身的机制发现和操作这些JavaBean属性。

------------------------------------------------------------------------------------------------------------------------------------

JDK中专门提供了一些对JavaBean进行操作的API,这套API称为内省。下面就来实例一下:

这是一个JavaBean类(ReflectPoint):

package com.www.Reflect;

public class ReflectPoint {

private int x;

private int y;

public ReflectPoint(int x,int y){   //构造函数无返回值!可以重载但是不可以被子类覆盖

super();

this.x = x;

this.y = y;

}

public int getX() {

return x;

}

public void setX(int x) {

this.x = x;

}

public int getY() {

return y;

}

public void setY(int y) {

this.y = y;

}

}

这是测试类(IntroSpectorTest),将在这个类中使用内省API。

package com.www.Reflect;

import java.beans.PropertyDescriptor;

import java.lang.reflect.Method;

/*

* 通过JavaBean来获取和设置类中属性

*/

public class IntroSpectorTest {

public static void main(String[] args) throws Exception {

ReflectPoint pt1 = new ReflectPoint(4, 6);

String propertyName = "x";

// 以下是PropertyDescriptor通过反射机制来获取JavaBean中的set、get方法

PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());

//通过PropertyDescriptor读取类信息,关键一步

//通过get()获取x的值

Method methodGetX = pd.getReadMethod();//调用方法信息

Object retVal = methodGetX.invoke(pt1);//取得返回值

System.out.println(retVal);

//通过Set()来设置x的值

Method methodSetX = pd.getWriteMethod();//调用方法信息

methodSetX.invoke(pt1,8);//取得返回值

System.out.println(pt1.getX());

}

}

当然,开发中经常使用BeanUtil包来方便的获取、设置属性。(要导入commons-beanutils.jar以及commons-logging-1.1.1.jar两个包)

BeanUtils.setProperty(pt1, propertyName, "9");   //pt1位JavaBean对象,propertyName为属性名

System.out.println(BeanUtils.getProperty(pt1,propertyName));

可以看出导入包之后操作JavaBean变得十分简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值