实例化泛型

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;
}

java 实例化泛型且赋值的更多相关文章

  1. Java反射给泛型集合赋值

    Java反射给泛型集合赋值 泛型 Java泛型简单描述下: 比如创建一个List集合,我想在里边只放Student对象信息,就需要写成 List<Student> studentList ...

  2. java基础-泛型1

    浏览以下内容前,请点击并阅读 声明 泛型的使用能使类型名称作为类或者接口定义中的参数,就像一般的参数一样,使得定义的类型通用性更强. 泛型的优势: 编译具有严格的类型检查 java编译器对于泛型代码的 ...

  3. java基础-泛型举例详解

    泛型 泛型是JDK5.0增加的新特性,泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数.这种类型参数可以在类.接口.和方法的创建中,分别被称为泛型类.泛型接口.泛型方法. 一.认识泛型 在没 ...

  4. java<T>泛型

    泛型 1.泛型的概述 在JDK1.5之前,把对象放入到集合中,集合不会记住元素的类型,取出时,全都变成Object类型.泛型是jdk5引入的类型机制,就是将类型参数化,它是早在1999年就制定的jsr ...

  5. Java中泛型的详细解析,深入分析泛型的使用方式

    泛型的基本概念 泛型: 参数化类型 参数: 定义方法时有形参 调用方法时传递实参 参数化类型: 将类型由原来的具体的类型参数化,类似方法中的变量参数 类型定义成参数形式, 可以称为类型形参 在使用或者 ...

  6. Java中泛型 类型擦除

    转自:Java中泛型是类型擦除的 Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就是说所有泛型参数类 ...

  7. 跟着刚哥梳理java知识点——泛型(十三)

    一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: public class GenericTest { public static void main(String[] a ...

  8. 【Java】泛型学习笔记

    参考书籍 <Java核心技术:卷1> 泛型, 先睹为快 先通过一个简单的例子说明下Java中泛型的用法: 泛型的基本形式类似于模板, 通过一个类型参数T, 你可以"私人定制&qu ...

  9. Java学习--泛型

    个人理解,所谓的泛型就是将数据类型像参数(称为类型参数或者泛型参数)一样传入类,接口或者方法中,这个类型参数可以当作普通的数据类型,进行变量的声明(成员变量,局部变量(包括方法参数)),指明返回值类型 ...

随机推荐

  1. 第七章 二叉搜索树(b3)BST:删除

  2. goim源码分析与二次开发-comet分析二

    这篇就是完全原版了,作为一个开始,先介绍comet入口文件main.go 第一步是初始化配置,还有白名单.还有性能监口,整体来说入口代码简洁可读性很强 然后开始初始化监控,还有bukcet这里buck ...

  3. C++的编译与连接

    编译器的任务是把我们人类通常能够读懂的文本形式的 C 语言文件转化成计算机能明白的目标文件.1.  预编译生成的仍然是.c文件1)把"include"的文件拷贝到要编译的源文件中. ...

  4. 转)Ubuntu安装mysql5.7

    主要参考http://blog.csdn.net/q894523017/article/details/50705392 包去官网下载,解压,安装步骤如下: 上文中有错误,正确如下: sudo dpk ...

  5. 19-Javaweb项目读取本地图片通过虚拟路径

    有时会把文件存在本地如将图片等放在c.d盘等,在javaweb引用时会出现无法直接访问的问题,但是还是有办法解决的. 可以通过配置虚拟路径: 步骤一: 双击servers下面的tomcat, 在弹出的 ...

  6. (转载)我的java问题排查工具单

    原文地址:https://yq.aliyun.com/articles/69520 我的问题排查工具箱 前言 平时的工作中经常碰到很多疑难问题的处理,在解决问题的同时,有一些工具起到了相当大的作用,在 ...

  7. vmware fusion 10序列号

    vmware fusion pro  10序列号   亲测可用激活 FG3TU-DDX1M-084CY-MFYQX-QC0RD

  8. Banner中文字怎么排版才好看?

    今天这命题,相信有很多人提出过疑问,一个好的文字排版会给你的作品增添色彩,我们先看看好的作品是怎样的. 看完这些图大家都能感觉出来这是一个好的作品,大家天生就对美和丑有一定的区分. 其实文字排版也好, ...

  9. datagrid分页 从后端获取数据也很简单

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Datagrid.aspx. ...

  10. qrc转换成py