Basic operation -- Reflection fill data

From , 2 Years ago, written in Java, viewed 211 times.
URL https://pastebin.vip/view/f3f1b7fc
  1. 1.主类
  2. package s0401反射实例自动填充;
  3.  
  4. import java.lang.reflect.Field;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7.  
  8. public class Main {
  9.  
  10.         public static void main(String[] args) throws Exception
  11.         {
  12.                
  13.                 //资料库
  14.                 Map<String,String> data=new HashMap<String,String>();
  15.                 data.put("name","fengwei");
  16.                 data.put("age","19");
  17.                 data.put("tel","909");
  18.                
  19.  
  20.            
  21.             //获得className 字符串的实例对象
  22.            Class s=Class.forName("s0401反射实例自动填充.Users"); //调用forName("X") 将导致名为 X 的类被初始化。properties中存放的是类的名称
  23.            
  24.             //对象实例化
  25.             Object obj=s.newInstance();
  26.            
  27.             //自动填充数据
  28.             autoFile(obj,data);
  29.            
  30.             //输出获得的实例对象
  31.             System.out.println(obj);
  32.        
  33.         }
  34.  
  35.         private static void autoFile(Object obj, Map<String, String> data) throws IllegalArgumentException, IllegalAccessException
  36.         {
  37.                 //获得填充数据中的所有字段,然后将此字段在数据源data中查询,如果有则填充
  38.                
  39.                 //获得字节码对象
  40.                 Class a=obj.getClass();
  41.                
  42.                 //获得所有的私有字段
  43.                 Field[] fields=a.getDeclaredFields();
  44.  
  45.            
  46.                 for(Field f:fields)
  47.                 {    
  48.                         //在资料库中获得需要的数据
  49.                         String value=data.get(f.getName());//在资料库中查找有没有对应要填充的字段
  50.  
  51.                         //强制设置权限,不然无法改变值
  52.                         f.setAccessible(true);
  53.                        
  54.                         //如果有需要的字段就填充到obj中
  55.                         if(value!=null)
  56.                         {  
  57.                                 f.set(obj, value);//填充值
  58.                         }
  59.                 }
  60.         }
  61. }
  62.  
  63. 2.User
  64. package s0401反射实例自动填充;
  65.  
  66. public class User {
  67.    private String name;
  68.    private String age;
  69.    private String tel;
  70.    
  71.    
  72. public String getTel() {
  73.         return tel;
  74. }
  75. public void setTel(String tel) {
  76.         this.tel = tel;
  77. }
  78. public String getName() {
  79.         return name;
  80. }
  81. public void setName(String name) {
  82.         this.name = name;
  83. }
  84. public String getAge() {
  85.         return age;
  86. }
  87. public void setAge(String age) {
  88.         this.age = age;
  89. }
  90. @Override
  91. public String toString() {
  92.         return "User [name=" + name + ", age=" + age + ", tel=" + tel + "]";
  93. }
  94.  
  95.  
  96. }
  97.  

Reply to "Basic operation -- Reflection fill data"

Here you can reply to the paste above

captcha

https://burned.cc - Burn After Reading Website