A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  • import java.beans.PropertyDescriptor;
  • import java.lang.reflect.Method;
  • //获取Point类中的属性值,并设置。
  • public class PointTest {
  •         public static void main(String[] args) throws Exception{
  •                 Point pt = new Point(3, 5);
  •                 String propertyName="x";
  •                 //获取x值。             如果想获取x的值,为什么不直接用pt.getX()呢?这样不是更方便吗?为什么要用下面这种方式呢?请教各位。
  •                 PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt.getClass());
  •                 Method getMethod = pd.getReadMethod();
  •                 Object retVal = getMethod.invoke(pt);
  • 复制代码
  • public class Point {
  •         private int x;
  •         private int y;
  •         public Point(int x,int y){
  •                 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;
  •         }
  • }



评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

1 个回复

倒序浏览
本帖最后由 Lin0411 于 2014-5-30 23:37 编辑

原因其实很简单,有时候是属性名是作为一个参数传入的,这时候就不能显示获得函数名并进行调用,而PropertyDescriptor根据JavaBean的函数命名规则对获取javaBean函数的方法进行了封装,这是就只要利用传进来的属性名就可以获得相应的javaBean的read和write方法,这样做最大的好处是提高了程序的扩展性,是程序的编写变得相当的灵活。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马