用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

基本操作--反射填充数据

2015-12-20 作者: 永夜极光举报

[java]代码库

1.主类
package s0401反射实例自动填充;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

public class Main {

	public static void main(String[] args) throws Exception
	{
		
		//资料库
		Map<String,String> data=new HashMap<String,String>();
		data.put("name","fengwei");
		data.put("age","19");
		data.put("tel","909");
		

	    
	    //获得className 字符串的实例对象
	   Class s=Class.forName("s0401反射实例自动填充.Users"); //调用forName("X") 将导致名为 X 的类被初始化。properties中存放的是类的名称
	    
	    //对象实例化
	    Object obj=s.newInstance();
	    
	    //自动填充数据
	    autoFile(obj,data);
	    
	    //输出获得的实例对象
	    System.out.println(obj);
	
	}

	private static void autoFile(Object obj, Map<String, String> data) throws IllegalArgumentException, IllegalAccessException 
	{
		//获得填充数据中的所有字段,然后将此字段在数据源data中查询,如果有则填充
		
		//获得字节码对象
		Class a=obj.getClass();
		
		//获得所有的私有字段
		Field[] fields=a.getDeclaredFields();

	    
		for(Field f:fields)
		{     
			//在资料库中获得需要的数据
			String value=data.get(f.getName());//在资料库中查找有没有对应要填充的字段

			//强制设置权限,不然无法改变值
			f.setAccessible(true);
			
			//如果有需要的字段就填充到obj中
			if(value!=null)
			{  
				f.set(obj, value);//填充值
			}
		}
	}
}

2.User类
package s0401反射实例自动填充;

public class User {
   private String name;
   private String age;
   private String tel;
   
   
public String getTel() {
	return tel;
}
public void setTel(String tel) {
	this.tel = tel;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getAge() {
	return age;
}
public void setAge(String age) {
	this.age = age;
}
@Override
public String toString() {
	return "User [name=" + name + ", age=" + age + ", tel=" + tel + "]";
}


}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...