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;
        }
  • 相关阅读:
    .net core 之Hangfire任务调度
    .net core 在扩展中使用接口实例之IServiceProvider
    .net core webapi 配置swagger调试界面
    c# async/await异步编程死锁的问题
    c# 关于async/await异步编程的浅析和使用
    后端向服务器发送客户端请求--HttpWebRequest
    FluentAPI关系映射配置
    FluentAPI配置
    AutoFac与ASP.NET MVC结合使用
    Log4Net快速配置
  • 原文地址:https://www.cnblogs.com/Cailf/p/10564817.html
Copyright © 2011-2022 走看看