java (内省)Introspector

原创 2013年12月02日 12:06:08

java (内省)Introspector


内省(Introspector) 是Java 语言对 JavaBean 类属性、事件的一种缺省处理方法

PropertyDescriptor类:

  PropertyDescriptor类表示JavaBean类通过存储器导出一个属性。主要方法:
      1. getPropertyType(),获得属性的Class对象;
      2. getReadMethod(),获得用于读取属性值的方法;getWriteMethod(),获得用于写入属性值的方法;
      3. hashCode(),获取对象的哈希值;
      4. setReadMethod(Method readMethod),设置用于读取属性值的方法;
      5. setWriteMethod(Method writeMethod),设置用于写入属性值的方法。
Introspector类:

  将JavaBean中的属性封装起来进行操作。在程序把一个类当做JavaBean来看,就是调用Introspector.getBeanInfo()方法,得到的BeanInfo对象封装了把这个类当做JavaBean看的结果信息,即属性的信息。

  getPropertyDescriptors(),获得属性的描述,可以采用遍历BeanInfo的方法,来查找、设置类的属性


public class BeanInfoUtil {
        
    public static void setPropertyByIntrospector(UserInfo userInfo,String userName)throws Exception{
        BeanInfo beanInfo=Introspector.getBeanInfo(UserInfo.class);
        PropertyDescriptor[] proDescrtptors=beanInfo.getPropertyDescriptors();
        if(proDescrtptors!=null&&proDescrtptors.length>0){
            for(PropertyDescriptor propDesc:proDescrtptors){
                if(propDesc.getName().equals(userName)){
                    Method methodSetUserName=propDesc.getWriteMethod();
                    methodSetUserName.invoke(userInfo, "ptu");
                    System.out.println("set userName:"+userInfo.getUserName());
                    break;
                }
            }
        }
    }
    
    public static void getPropertyByIntrospector(UserInfo userInfo,String userName)throws Exception{
        BeanInfo beanInfo=Introspector.getBeanInfo(UserInfo.class);
        PropertyDescriptor[] proDescrtptors=beanInfo.getPropertyDescriptors();
        if(proDescrtptors!=null&&proDescrtptors.length>0){
            for(PropertyDescriptor propDesc:proDescrtptors){
                if(propDesc.getName().equals(userName)){
                    Method methodGetUserName=propDesc.getReadMethod();
                    Object objUserName=methodGetUserName.invoke(userInfo);
                    System.out.println("get userName:"+objUserName.toString());
                    break;
                }
            }
        }
    }
    
}

JAVA Introspector内省用法

package cn.itcat.introspector; import java.beans.BeanInfo; import java.beans.Introspector; import ja...
  • dlj949611520
  • dlj949611520
  • 2016年04月15日 20:24
  • 594

Java:内省(Introspector)深入理解

内省(Introspector) 是Java 语言对 JavaBean 类属性、事件的一种缺省处理方法。   JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有...
  • zmx729618
  • zmx729618
  • 2016年05月05日 09:30
  • 2680

java 反射(Reflection)和内省(Introspector)

总论: java中所有对象(object)不是引用类型(reference)就是基本类型(primitive)。不管什么类型对象,java虚拟机都会为之实例化一个 java.lang.Class的不可...
  • sam_linux
  • sam_linux
  • 2013年10月21日 21:45
  • 1860

JAVA内省(Introspector)

'ɪntrəspektɜ 什么是Java内省:内省是Java语言对Bean类属性、事件的一种缺省处理方法。 Java内省的作用:一般在开发框架时,当需要操作一个JavaBean时,如果一直用反射来操作...
  • x605940745
  • x605940745
  • 2014年03月01日 23:29
  • 3432

Java内省机制IntroSpector

内省(IntroSpector)是Java语言对JavaBean 类属性、事件的一种处理方法。 例如类A中有属性name, 那我们可以通过getName,setName 来得到其值或者设置新的值。 通...
  • conquer0715
  • conquer0715
  • 2015年01月17日 15:39
  • 3983

JAVA的内省机制(introspector)与反射机制(reflection)

 相对而言,反射比内省更容易理解一点。用一句比较白的话来概括,反射就是让你可以通过名称来得到对象 ( 类,属性,方法 ) 的技术,这种技术比内省机制使用范围更广泛。例如我们可以通过类名来生成一个类的实...
  • zgmzyr
  • zgmzyr
  • 2010年07月21日 17:19
  • 4417

Java web-内省(Introspector)

这个反射类是在网易云课堂上30天轻松掌握JavaWeb里面学习的。可以写框架用。但是为什么还要学呢?当然是为了用喽。 内省是sun公司开发的一套API,专门用于操作java对象的属性,虽然反射技术也...
  • jsmok_xingkong
  • jsmok_xingkong
  • 2017年11月11日 15:46
  • 34

java内省Introspector

内省(Introspector) 是Java 语言对 JavaBean 类属性、事件的一种缺省处理方法。   JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段...
  • heiyueya
  • heiyueya
  • 2017年03月25日 19:49
  • 104

Java内省IntroSpector应用

Java内省IntroSpector应用 内省(IntroSpector)是Java语言对JavaBean 类属性、事件的一种缺省处理方法。 例如类A中有属性name, 那我们可以通过getNam...
  • nbfcome
  • nbfcome
  • 2013年12月10日 16:18
  • 359

Java 内省技术(Introspector)

Java 中类的成员变量的访问级别为private ,分别用get 和set来访问和设置这个成员变量的值。 JavaBean 它是一个普通的Java类,用来封装数据,Introspector(内省技...
  • vs2008ASPNET
  • vs2008ASPNET
  • 2013年09月06日 14:49
  • 453
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java (内省)Introspector
举报原因:
原因补充:

(最多只允许输入30个字)