A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周发建 中级黑马   /  2016-3-31 13:17  /  629 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

(一)内省 Introspector
/**
* 用于操作javabean(特殊的java类:get/set)
*/
class MyBeanUtils{
        //1. 反射操作bean
        public static Object getProperties1(Object bean, String name) throws Exception{
                Field f = bean.getClass().getDeclaredField(name);
                f.setAccessible(true);
                return f.get(bean);
        }
        public static void setProperties1(Object bean, String name, Object value) throws Exception{
                Field f = bean.getClass().getDeclaredField(name);
                f.setAccessible(true);
                f.set(bean, value);
        }
       
        //2. 内省操作bean,复杂方式
        public static Object getProperties2(Object bean, String name) throws Exception{
                BeanInfo info = Introspector.getBeanInfo(bean.getClass());
                PropertyDescriptor[] pds = info.getPropertyDescriptors();
                for(PropertyDescriptor pd: pds){
                        if(pd.getName().equals(name)){
                                return pd.getReadMethod().invoke(bean);
                        }
                }
                return null;
        }
        public static void setProperties2(Object bean, String name, Object value) throws Exception{
                BeanInfo info = Introspector.getBeanInfo(bean.getClass());
                PropertyDescriptor[] pds = info.getPropertyDescriptors();
                for(PropertyDescriptor pd: pds){
                        if(pd.getName().equals(name)){
                                pd.getWriteMethod().invoke(bean, value);
                        }
                }
        }
       
        //3. 内省操作bean,简单方式
        public static Object getProperties3(Object bean, String name) throws Exception{
                PropertyDescriptor pd = new PropertyDescriptor(name, bean.getClass());
                Method get = pd.getReadMethod();
                return get.invoke(bean);
        }
        public static void setProperties3(Object bean, String name, Object value) throws Exception{
                PropertyDescriptor pd = new PropertyDescriptor(name, bean.getClass());
                Method set = pd.getWriteMethod();
                set.invoke(bean, value);
        }
}

3 个回复

倒序浏览
为了黑马币也是够了。。。。。。。。。
回复 使用道具 举报
还没学到什么是反射呢0.0
回复 使用道具 举报
晴苑 发表于 2016-3-31 17:24
为了黑马币也是够了。。。。。。。。。

哈哈哈哈,你也是够了。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马