黑马程序员技术交流社区
标题: java基础之,反射练习02 [打印本页]
作者: 周发建 时间: 2016-3-31 13:17
标题: java基础之,反射练习02
(一)内省 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);
}
}
作者: 晴苑 时间: 2016-3-31 17:24
为了黑马币也是够了。。。。。。。。。
作者: 赵浩霖 时间: 2016-3-31 19:55
还没学到什么是反射呢0.0
作者: 赵浩霖 时间: 2016-3-31 19:56
哈哈哈哈,你也是够了。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |