栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaBean与内省(Introspector)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaBean与内省(Introspector)

JavaBean与内省(Introspector)

JavaBean是一种规范,内省是jdk提供的一系列基础API,用于对JavaBean进行操作,包括获取执行属性,方法等。

JavaBean中的Property的含义,是读写方法的属性,如下Apple类,有3个字段(Filed),分别是core,colour,isSpy。

但是却有class,core,colour,isSpy,zi这5个属性(Property)。

@Service
public class Apple {
    private Core core;

    private String colour;

    private boolean isSpy;

    
    public boolean isSpy() {
        return isSpy;
    }

    
    public Apple setSpy(boolean spy) {
        isSpy = spy;
        return this;
    }

    
    public Core getCore() {
        return core;
    }

    
    public Apple setCore(Core core) {
        this.core = core;
        return this;
    }

    
    public String getColour() {
        return colour;
    }

    
    public Apple setColour(String colour) {
        this.colour = colour;
        return this;
    }

    public Zi getZi() {
        return new Zi("apple zi");
    }

    public Apple setZi(Zi zi) {
        this.core.setZi(zi);
        return this;
    }
}
public class IntrospectorSurprise {
    public static void main(String[] args) {
        try {
            Apple apple = new Apple();
            apple.setColour("red");
            apple.setName("apple");
            BeanInfo beanInfo = Introspector.getBeanInfo(apple.getClass(), Introspector.IGNORE_IMMEDIATE_BEANINFO);
            for (int i = 0; i < beanInfo.getPropertyDescriptors().length; i++) {
                String key = beanInfo.getPropertyDescriptors()[i].getName();
                if (!key.equals("class")) {
                    // 得到property对应的getter方法
                    Method getter = beanInfo.getPropertyDescriptors()[i].getReadMethod();
                    Object value = getter.invoke(apple);
                    System.out.println("key:" + key + ", value:" + value);
                }
            }
        } catch (IntrospectionException | IllegalAccessException | InvocationTargetException e) {
            e.printStackTrace();
        }
    }
}

运行结果

key:colour, value:red
key:core, value:null
key:name, value:apple
key:spy, value:false
key:zi, value:Zi{name='apple zi'}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/310253.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号