javabean 的内省_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > javabean 的内省

javabean 的内省

 2013/10/28 15:58:08  kiddy2012  程序员俱乐部  我要评论(0)
  • 摘要:首先看看什么是内省,我在网上找,也没找出什么具体定义,我就以自己的理解来说吧!内省是java的反射机制对javaBean的一种特例处理方式!简单说就是:内省就是javaBean在知道属性名的情况下,来访问类中的get和set方法,或得属性名的值!!(要是不知道什么是javaBean或者不知道什么是反射,那看看其他资料吧),还有就是如果是属性值和变量值一样的话,个人觉得如果用包里反射应该也许能够达到同样的目的!不多说了!看代码吧:第一个是一个javaBean的例子,我们操作就是对他操作
  • 标签:Java
    首先看看什么是内省,我在网上找,也没找出什么具体定义,我就以自己的理解来说吧!内省是java的反射机制对javaBean的一种特例处理方式!简单说就是:内省就是javaBean在知道属性名的情况下,来访问类中的get和set方法,或得属性名的值 !!(要是不知道什么是javaBean或者不知道什么是反射,那看看其他资料吧),还有就是如果是属性值和变量值一样的话,个人觉得如果用包里反射应该也许能够达到同样的目的!不多说了!看代码吧:
        第一个是一个javaBean的例子,我们操作就是对他操作!
class="java">
package one;
public class JavaBeanTest {
    private int x=0;
    private int y=8;
    private String string = new String("这是一个javabean的测试");
    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;
    }
    public String getString() {
        return string;
    }
    public void setString(String string) {
        this.string = string;
    }    
}

     然后是我们的主类:
package one;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;

public class Test {
    public static void main(String[] args) throws Exception {
        // 实例化一个javabean的对象
        JavaBeanTest javaBeanTest = new JavaBeanTest();
        // 这是个属性名
        String propertyName = new String("x");
        /*
         * 第一种方法
         */
        // 属性描述符
        // PropertyDescriptor propertyDescriptor = new
        // PropertyDescriptor(propertyName, javaBeanTest.getClass());
        // 通过属性名得到方法
        // Method methodGetX = propertyDescriptor.getReadMethod();
        // Object returnVal = methodGetX.invoke(javaBeanTest);
        // System.out.println(object);
        /*
         * 另一种方法
         */
        Object returnVal = null;
        BeanInfo beanInfo = Introspector.getBeanInfo(javaBeanTest.getClass());
        PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
        for (PropertyDescriptor pd : pds) {
            if (pd.getName().equals(propertyName)) {
                Method methodGetX = pd.getReadMethod();
                returnVal = methodGetX.invoke(javaBeanTest);
                break;
            }

        }
        System.out.println(returnVal);
    }
}

     在这个类里我用了两种方法,第一种是比较简单,也可以解决问题,第二种是常规方法,大多网上都是用的这种方!
      分享让更多人收益!
发表评论
用户名: 匿名