黑马程序员-- 09对于javabean的操作
来源:互联网 发布:荣耀盒子推荐软件 编辑:程序博客网 时间:2024/04/29 19:14
根据属性名取得值,
//"x"-->"X"-->"getX"-->MethodGetX-->
Member member = new Member(3,5);
String propertyName = "x";
PropertyDescriptor pd = new PropertyDescriptor(propertyName, member.getClass());
Method methodGetX = pd.getReadMethod();//得到get方法
Object retVal = methodGetX.invoke(member);
System.out.println(retVal);
Method methodSetX = pd.getWriteMethod();//得到Set方法
methodSetX.invoke(member,7);
System.out.println(member.getX());
以上代码点击重构抽取方法还可以变成这样(右键-->Refactor-->Extract Method)
public static void main(String[] args) throws Exception {
Member member = new Member(3,5);
String propertyName = "x";
Object retVal = getProperty(member, propertyName);
System.out.println(retVal);
Object value=7;
setProperty(member, propertyName, value);
System.out.println(member.getX());
}
private static void setProperty(Object member, String propertyName,
Object value) throws IntrospectionException,
IllegalAccessException, InvocationTargetException {
PropertyDescriptor pd2 = new PropertyDescriptor(propertyName, member.getClass());
Method methodSetX = pd2.getWriteMethod();//得到Set方法
methodSetX.invoke(member,value);
}
private static Object getProperty(Object member, String propertyName)
throws IntrospectionException, IllegalAccessException,
InvocationTargetException {
PropertyDescriptor pd = new PropertyDescriptor(propertyName, member.getClass());
Method methodGetX = pd.getReadMethod();//得到get方法
Object retVal = methodGetX.invoke(member);
return retVal;
}
采用遍历BeanInfo的所有属性方式来查找和设置某个RefectPoint对象的x属性。在程序中把一个类当作JavaBean
来看,就是调用IntroSpector.getBeanInfo方法,得到的BeanInfo对象封装了把这个类当作JavaBean的结果信息。
还可以使用Beanutils工具包做以上的事情对javabean进行操作:
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils;
jar包:
commons-beanutils-1.8.3.jar
commons-logging-1.1.1.jar
例如:
Object value=7;
setProperty(member, propertyName, value);
System.out.println(BeanUtils.getProperty(member, "x").getClass().getName());
BeanUtils.setProperty(member, "x", "9");
System.out.println(member.getX());
/*//java7的新特性
Map map={name:"zxx",age:18};
BeanUtils.setProperty(map, "name", "cjl");
*/
BeanUtils.setProperty(member, "brithday.time","111");
System.out.println(BeanUtils.getProperty(member, "brithday.time"));
PropertyUtils.setProperty(member, "x", 9);
System.out.println(PropertyUtils.getProperty(member, "x"));
------- android培训、java培训、期待与您交流! ---------- 详细请查看:http://edu.csdn.net/heima/
- 黑马程序员-- 09对于javabean的操作
- 黑马程序员--07.JavaBean--01【JavaBean】【JavaBean的简单操作】
- 黑马程序员-----JavaBean的内省操作
- 黑马程序员-javaBean的简单内省操作
- 黑马程序员--07.JavaBean--02【JavaBean的复杂内省操作】【第三方类库BeanUtils操作JavaBean】
- 黑马程序员_012_对JavaBean操作的四种方式
- 黑马程序员----高新技术----之对JavaBean的操作
- 黑马程序员—java基础学习--JavaBean的内省操作
- 黑马程序员-----BeanUtil操作Javabean与注解
- 黑马程序员-内省、操作JavaBean工具类
- 黑马程序员_BeanUtils工具包操作javabean类
- 黑马程序员-4-JavaBean内省操作
- 黑马程序员——高新技术(day2)反射,JavaBean的操作和注解的应用
- 黑马程序员_第六天_高新技术之理解对JavaBean的内省操作
- 黑马程序员-JavaBean
- 黑马程序员-java-JavaBean
- 黑马程序员-javabean
- 黑马程序员---内省JavaBean
- Android编程之SQLite补充
- 第四章 工作流引擎的设计与实现(五)
- MVC最佳实践资料汇集
- 输入一个正数 n,输出所有和为 n 连续正数序列。
- 自动打印android应用程序使用内存的脚本
- 黑马程序员-- 09对于javabean的操作
- vs2010 c# activex 开发
- Java基础加强之内省(introspector)
- 语音质量评价
- 程序猿基础
- linux 开启ftp和telnet服务
- 从FTP服务器下载文件
- oracle等待事件11——重做缓冲区上的等待事件
- SQL中SELECT INTO和INSERT INTO SELECT语句介绍