用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


还能输入: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、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

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

加载中,请稍后...