Java反射

1、创建缓存池,可以加快访问速度
text
1
private static final Map<String, List<Field>> CACHE = new HashMap<String, List<Field>>();
2、获取实体类的所有属性,返回Field列表
text
1 2 3 4 5 6 7 8 9 10 11 12 13
private List<Field> getFieldOfClass(Class<?> clazz) {
      List<Field> fields = CACHE.get(clazz.getName());
      if (fields == null) {
         Field[] fieldArr = clazz.getDeclaredFields();
         fields = new ArrayList<Field>(fieldArr.length);
         for (Field each : fieldArr) {
            each.setAccessible(true);
            fields.add(each);
         }
         CACHE.put(clazz.getName(), fields);
      }
      return fields;
   }
3、为对象设置值
text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
public <T> T setObjVal(T obj) {
      if (obj == null) {
         return null;
      }
      List<Field> fields = getFieldOfClass(obj.getClass());
      for (int j = 0, size = fields.size(); j < size; j++) {
         try {
            // 获取属性的名字
            Field each = fields.get(j);
            //为set方法set值
            each.set(obj, "参数值");
         } catch (Exception e) {
            e.printStackTrace();
         }
      }
      return obj;
   }

原文地址:https://blog.csdn.net/wsc912406860/article/details/81486879?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168474993716782425192019%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168474993716782425192019&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-16-81486879-null-null.142^v87^insert_down1,239^v2^insert_chatgpt&utm_term=java%E4%BC%98%E5%8C%96