yunquan

 

  我现在的理解就是,Java的内省机制就是针对JavaBean的,可以获取到类的属性名称,以及属性的Getter和Setter方法,应该是在写框架的时候才会用到内省机制,还有一个地方可以用到内省机制,就是JavaBean和Map的转化的时候,需要JavaBean的内省机制去获取属性的值,这个例子在下篇文章里介绍。

代码,我先写一个JavaBean的类

package com.Day17;

public class IntrospectorDemo {
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

至于什么是JavaBean去百度查吧,我的理解就是有Getter和Setter属性

main方法的类:

package com.Day17;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;

public class Test {
    public static void main(String[] args) throws Exception{
        //Java内省机制,其实就是获取类的属性和属性类型
        //1,获取JavaBean的描述对象
        BeanInfo beanInfo= Introspector.getBeanInfo(IntrospectorDemo.class,Object.class);
        //2,获取JavaBean中的属性的描述器
        PropertyDescriptor [] pds=beanInfo.getPropertyDescriptors();
        //3,打印出来
        for (PropertyDescriptor pd:pds) {
            System.out.println("属性名:"+pd.getName());
            System.out.println("Getter:"+pd.getReadMethod());
            System.out.println("Setter:"+pd.getWriteMethod());
            System.out.println("----------------------------------");
       
//属性是可以执行的,这应该就是反射了
  
       System.out.println(pd.getReadMethod().invoke(new People()));
       System.out.println("----------------结束---------------");
} } }

打印结果:

 

分类:

技术点:

相关文章:

  • 2021-11-29
  • 2021-12-20
  • 2021-11-29
  • 2021-11-29
  • 2021-12-28
  • 2021-11-29
  • 2022-02-20
  • 2022-12-23
猜你喜欢
  • 2021-11-29
  • 2021-11-29
  • 2021-11-29
  • 2021-11-29
  • 2021-11-29
相关资源
相似解决方案