Java基础笔记 – 通过反射机制动态获取属性的值模拟Struts的自动赋值
本文由发表于6年前 | Java基础 | 评论数 3 |  被围观 7,873 views+

准备知识:
Java反射机制
处理事务的JavaBean
String的操作常用方法
这里我们通过反射机制动态获取属性的值模拟Struts中的自动赋值。

首先创建一个简单的User类包含两个属性username和userid以及getter、setter方法:

class User {
	public User(){}

	private String username;

	private String userid;

	public String getUserid() {
		return userid;
	}

	public void setUserid(String userid) {
		this.userid = userid;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}
}

接下来创建User类的对象user1,然后通过反射机制动态把user1对象的所有属性赋值给新建的user2:

//创建user1对象
User user1 = new User();
user1.setUsername("arthinking");
user1.setUserid("001");
String username = "arthinking";
String userid = "001";

//通过user1对象获取Class
Class<?> classType = user1.getClass();

//生成user2对象
Object user2 = classType.getConstructor(new Class[]{}).newInstance(new Object[]{});

//从user1对应的Class对象中获取所有的属性
Field[] fields = classType.getDeclaredFields();
for(int i=0; i<fields.length; i++){

	Field field = fields[i];
	//动态生成getter和setter方法
	String fieldName = field.getName();
	String firstChar = fieldName.substring(0,1).toUpperCase();
	String getterName = "get" + firstChar + fieldName.substring(1);
	String setterName = "set" + firstChar + fieldName.substring(1);
	Method getter = classType.getMethod(getterName);
	Method setter = classType.getMethod(setterName, new Class[]{field.getType()});

	//执行getter方法获取当前域的值
	Object result = getter.invoke(user1);
	//执行setter给user2赋值
	setter.invoke(user2, new Object[]{result});
}
除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/java-based-notes-through-reflection-to-get-property-value-dynamically-simulate-the-automatic-assignment-struts.html
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 10/7
文章评论
    3条评论
  1. 码园小农 2014年04月17日18:58:51  #-49楼 回复 回复

    处理getter、setter方法太简单了点,如果碰到boolean基本类型的变量就不行了。

给我留言

有人回复时邮件通知我
Java基础的相关文章
随机文章 本月热门 热评
1 软件项目管理-进度计划 质量保证 CMM 2011/7/1
2 web组件的设计思路与编写 效率问题 2013/3/17
3 jQuery使用数组编写向左滚动的图片栏 2011/5/15
4 Matters Neeeding Attention When Test The App Push Service 2014/10/10
5 Javascript Web Application笔记之MVC和类 – 类的继承 函数调用 匿名函数 作用域 类库介绍 2012/6/23
6 更新常量类导致的编译问题 2014/12/8
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.