美文网首页
java反射-第3篇

java反射-第3篇

作者: 松松木tell | 来源:发表于2019-01-04 14:05 被阅读0次

    例子

    通过反射动态给对象赋值

       @Test
        public void testd() throws Exception {
            Map<Object, Object> map = new HashMap<>();
            map.put("name", "张三");
            map.put("age", 18);
            User user = new User();
            reflectValue(map, user);
            System.out.println(user.toString());
        }
         //通过反射动态给对象赋值
        public Object reflectValue(Map<Object, Object> map, Object bean) throws Exception {
            Class<?> cls = bean.getClass();
            Method[] methods = cls.getDeclaredMethods();//获取该类所有的方法
            Field[] fields = cls.getDeclaredFields();//获取该类所有的属性
            for (Field field : fields) {
                String fieldName = field.getName();
                Object value = map.get(fieldName);
                if (value == null) {
                    continue;
                }
                String setMethod = "set" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
                if (!checkMethod(setMethod, methods)) {
                    continue;
                }
                Method method = cls.getMethod(setMethod, field.getType());
                method.setAccessible(true);//关闭安全检查
                method.invoke(bean, value);
            }
            return bean;
        }
         //检查方法是否存在
        private boolean checkMethod(String setMethod, Method[] methods) {
            for (Method m : methods) {
                if (setMethod.equals(m.getName())) {
                    return true;
                }
            }
            return false;
        }
    

    相关文章

      网友评论

          本文标题:java反射-第3篇

          本文链接:https://www.haomeiwen.com/subject/qechrqtx.html