zoukankan      html  css  js  c++  java
  • java 实例化泛型且赋值

    实例化泛型

    Class <T> clazz = (Class <T>) ((ParameterizedType) new 
     Entity().getClass().getGenericSuperclass()).getActualTypeArguments()[0];
            T dto = clazz.newInstance();

    泛型方法

        /**
         * 
         * @param clazz
         * @param book
         * @param sheetIndex
         * @param <T>
         * @return
         * @throws IllegalAccessException
         * @throws InstantiationException
         */
        public static <T> List<T> toEntity(Class<T> clazz,Workbook book, int sheetIndex) throws IllegalAccessException, InstantiationException {
            List<T> list = new ArrayList<>();
    //        Class <T> clazz = (Class <T>) ((ParameterizedType) entity.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
            T dto = clazz.newInstance();
            T dto2 = clazz.newInstance();
            Field[] fields = clazz.getDeclaredFields();
            Map<String, Field> fieldMap = new LinkedHashMap<>();
            for (Field field : fields) {
                String mod = Modifier.toString(field.getModifiers());
                System.out.println("mod = " + mod);
                // 跳过静态属性
                if (mod.indexOf("static") != -1) {
                    continue;
                }
    
                // 取得注解的设置的属性值
                Description setField = field.getAnnotation(Description.class);
                if (setField != null) {
                    String fieldName = setField.key();
                    String fieldType = setField.value();
                    //   必须,不然赋值会出现异常
                    field.setAccessible(true);
                    fieldMap.put(fieldType, field);
                    System.out.println("注解的属性 fieldName = " + fieldName);
                    System.out.println("注解的属性 fieldType = " + fieldType);
                }
            }
            int num = 0;
            for (String key : fieldMap.keySet()) {
                num++;
                fieldMap.get(key).set(dto, "dto1:" + key + num);
                fieldMap.get(key).set(dto2, "dto2:" + key + num);
            }
            list.add(dto);
            return list;
        }
  • 相关阅读:
    测试流程之需求评审
    如何编写测试计划
    一定要知道的,那些Linux操作命令
    线上bug分析
    做一个靠谱的软件测试人员
    测试方向
    怎样才能提交一个让开发人员拍手叫好的bug单
    软件测试职业发展
    MongoDB的启动流程
    百度语音
  • 原文地址:https://www.cnblogs.com/Cailf/p/10564817.html
Copyright © 2011-2022 走看看