• java反射遍历实体类属性和类型,并赋值和获取值


    /*
    * GetModelNameAndType.java
    * Version 1.0.0
    * Created on 2017年12月15日
    * Copyright ReYo.Cn
    */
    package reyo.sdk.utils.reflect;
    
    /**    
    * <B>创  建 人:</B>AdministratorReyoAut <BR>
    * <B>创建时间:</B>2017年12月15日 下午9:20:44<BR>
    * 
    * @author ReYo
    * @version 1.0
    */
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.Date;
    
    /** 
     * 获取实体类型的属性名和类型 
     * @param model 为实体类 
     * @author kou  为传入参数 
     */
    public class GetModelNameAndType {
    
        public static void testReflect(Object model) throws SecurityException, NoSuchMethodException,
                IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException {
            // 获取实体类的所有属性,返回Field数组  
            Field[] field = model.getClass().getDeclaredFields();
            // 获取属性的名字  
            String[] modelName = new String[field.length];
            String[] modelType = new String[field.length];
            for (int i = 0; i < field.length; i++) {
                // 获取属性的名字  
                String name = field[i].getName();
                modelName[i] = name;
                // 获取属性类型  
                String type = field[i].getGenericType().toString();
                modelType[i] = type;
    
                //关键。。。可访问私有变量  
                field[i].setAccessible(true);
                //给属性设置  
                field[i].set(model, field[i].getType().getConstructor(field[i].getType()).newInstance("kou"));
    
                // 将属性的首字母大写  
                name = name.replaceFirst(name.substring(0, 1), name.substring(0, 1).toUpperCase());
    
                if (type.equals("class java.lang.String")) {
                    // 如果type是类类型,则前面包含"class ",后面跟类名  
                    Method m = model.getClass().getMethod("get" + name);
                    // 调用getter方法获取属性值  
                    String value = (String) m.invoke(model);
                    if (value != null) {
    
                        System.out.println("attribute value:" + value);
                    }
    
                }
                if (type.equals("class java.lang.Integer")) {
                    Method m = model.getClass().getMethod("get" + name);
                    Integer value = (Integer) m.invoke(model);
                    if (value != null) {
                        System.out.println("attribute value:" + value);
                    }
                }
                if (type.equals("class java.lang.Short")) {
                    Method m = model.getClass().getMethod("get" + name);
                    Short value = (Short) m.invoke(model);
                    if (value != null) {
                        System.out.println("attribute value:" + value);
                    }
                }
                if (type.equals("class java.lang.Double")) {
                    Method m = model.getClass().getMethod("get" + name);
                    Double value = (Double) m.invoke(model);
                    if (value != null) {
                        System.out.println("attribute value:" + value);
                    }
                }
                if (type.equals("class java.lang.Boolean")) {
                    Method m = model.getClass().getMethod("get" + name);
                    Boolean value = (Boolean) m.invoke(model);
                    if (value != null) {
                        System.out.println("attribute value:" + value);
                    }
                }
                if (type.equals("class java.util.Date")) {
                    Method m = model.getClass().getMethod("get" + name);
                    Date value = (Date) m.invoke(model);
                    if (value != null) {
                        System.out.println("attribute value:" + value.toLocaleString());
                    }
                }
            }
        }
    
        public static void main(String[] args) {
            try {
                testReflect(new VO());
            } catch (SecurityException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            } catch (InstantiationException e) {
                e.printStackTrace();
            }
        }
    
    }
  • 相关阅读:
    es6 --- var const let
    HTTP -- 请求/响应 结构
    点击下载文件
    计算机当前时间
    js -- img 随着鼠标滚轮的变化变化
    vue --- 全局守卫
    vue -- 路由懒加载
    vuex -- 状态管理
    js对数组进行操作
    高性能网站建设
  • 原文地址:https://www.cnblogs.com/interdrp/p/8044899.html
Copyright © 2020-2023  润新知