java内省小记

//为了让程序员更好的操作javabean的属性,JDK提供了一套API用来访问某个属性的setter或getter方法。这就是内省
    //内省(Introspector)是java语言对javabean类属性,方法和事件的一种标准处理方式。
    //内省访问javabean有两种方法。

    //设置javaBean属性值。
    public static void main(String[] args) throws Exception {
        //1.方式一
        /*//实例化一个person对象
        Person beanObj = new Person();
        //通过Introspector对象获取Person对象的BeanInfo对象
        BeanInfo beanInfoObject = Introspector.getBeanInfo(beanObj.getClass(),beanObj.getClass().getSuperclass());
        //通过BeanInfoObject的getPropertyDescriptors方法,的到Bean中的所有属性信息。
        propertyDescriptors = beanInfoObject.getPropertyDescriptors();
        //便利属性信息,通过getName的到属性名,通过getPropertyType得到属性类型对象。
        for (int i = 0; i <propertyDescriptors.length; i++) {

            String name = propertyDescriptors[i].getName();
            Class<?> propertyType =  propertyDescriptors[i].getPropertyType();
            System.out.println(name+"("+propertyType.getName()+")");
        }*/

        //方式二  直接通过PropertyDescriptor对象,获取属性信息。

        //创建person类的对象
        Person p = new Person();
        //通过属性描述器,获得那么属性描述信息。
        PropertyDescriptor pd = new PropertyDescriptor("name",p.getClass());
        //获取name属性的setter方法。
        Method methodName = pd.getWriteMethod();
        //调用setter方法。设置name值
        methodName.invoke(p,"小米");

        System.out.println(p);

//相应的person类

private String name;
    private int age;
    public Person(){}
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String toString(){
        return this.name+":"+this.age;
    }
时间: 2024-10-13 22:46:44

java内省小记的相关文章

Java 内省 Introspector

操纵类的属性,有两种方法 反射 内省 面向对象的编程中,对于用户提交过来的数据,要封装成一个javaBean,也就是对象 其中Bean的属性不是由字段来决定的,而是由get和Set方法来决定的 public class Person { private String name ; private String password; private int age; public String getName() { return name; } public void setName(String

java中断小记(二)

在上一篇博文中,介绍了成员方法interrupt()的用法,这篇接上上篇继续介绍剩下的两个与中断有关的方法. 2.成员方法new Thread().isInterrupted() 通常使用Thread.currentThread().isInterrupted()方法判断某个线程是否已被发送过中断请求(某一线程被发送过中断请求后并一定会中断),因为它将线程中断标示位设置为true后,不会立刻清除中断标示位,即不会将中断标设置为false.程序示例如下: package com.szw.test;

java 内省

用内省来操作Bean会给程序带来很大的便利,特别是在很大的实体对象的时候,在其属性很多的时候要为其赋值的时候, package com.bean; public class User { private String uid; private String userName; private String userPass; private String age; private String sex; public User(){} public String getUid() { retur

Java内省技术

-------<a href="http://www.itheima.com/"">android培训</a>.<a href="http://www.itheima.com/" ">java培训</a>期待与您交流!---------- JavaBean类: 在Java中有一种特殊的类,它用于程序中两个模块的信息交换.它的特点是将成员变量私有化.用getter和setter方法获取设置其成员变量的

Java内省

大家都知道,Java给我提供了反射机制,使我们可以获取到每一个类的每一个属性和方法,并对此进行操作.但是利用反射来操作对象时过于麻烦,所以sun公司就基于反射机制给大家提供了一个更加简单实用的api,那就是内省(Introspector),而内省这套api将会使我们操作JavaBean的属性更加方便. 1.什么是Javabean? ①类必须是公共的 ②类必须具备无参构造器 2.什么是Javabean的属性? 要理解内省的概念,我们先来理解一下什么叫Javabean的属性,下面我们猜下该Javab

java内省(Introspector)

内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则.如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为"值对象"(Value Object),或"VO".方法比较少.这些信息储存在类的私有变量中,通过set().get()获得 Java JDK中提供了一套 API 用来访

java内省机制

一.概念 内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则.如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为“值对象”(Value Object),或“VO”.方法比较少.这些信息储存在类的私有变量中,通过set().get()获得.通俗地讲,每一对set/get方法都是对应的javaBean的一

Java:内省(Introspector)深入理解

内省(Introspector) 是Java 语言对 JavaBean 类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则.如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为"值对象"(Value Object),或"VO".方法比较少.这些信息储存在类的私有变量中,通过set().get()获得. 例如类UserInfo : package

java内省机制Introspector

访问JavaBean属性的两种方式 1)直接调用bean的setXXX或getXXX方法: 2)通过内省技术访问(java.beans包提供了内省的API),内省技术访问也提供了两种方式: a)通过PropertyDescriptor类操作Bean的属性: b)通过Introspector类获得Bean对象的 BeanInfo,然后通过 BeanInfo 来获取属性的描述器( PropertyDescriptor ),通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,