实例化泛型

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. 如何学习mybatis

    最近几天学习了mybatis框架,我是mybatis视频学习的.看这篇文章,我建议首先要会熟练使用MVC架构,再学习这个框架. 在我们写传统的MVC模式写Bean,Dao,Servlet时,我们每次调 ...

  2. 判断UNITY版本号

    代码示例: #if (UNITY_5_3 || UNITY_5_4 || UNITY_5_5 || UNITY_5_6 || UNITY_5_7 || UNITY_5_8 || UNITY_5_9)u ...

  3. 【c++】c++中重载输出操作符,为什么要返回引用

    针对:ostream & operator <<(ostream & os, const ClassType &object) 说明几点: 1.第一个形参为对ost ...

  4. iOS 11 scroll滚动偏移,tableview偏移44,获取view的宽和高

    1. tableview 的头部 有44的偏移量 1>.设置 tableview的 属性 tableView.scrollIndicatorInsets = UIEdgeInsets.zero ...

  5. Mongodb相对于关系型数据库的优缺点(转)

    与关系型数据库相比,MongoDB的优点: ①弱一致性(最终一致),更能保证用户的访问速度: 举例来说,在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精 ...

  6. MongoDB安装(一)

    详细图解,记录 win7 64 安装mongo数据库的过程.安装的版本是 MongoDB-win32-x86_64-2008plus-ssl-3.4.1-signed. 示例版本:mongodb-wi ...

  7. C盘满了如何清理

    一.C:\inetpub\logs\LogFiles\ 中的日志文件可以全部删除二.C盘上右键>属性>磁盘清理 和 系统磁盘清理三.百度下载:魔方清理大师>逐项清理四.卸载较大的不常 ...

  8. yaf框架安装配置

    YAF中文文档:http://www.laruence.com/manual/index.html 1 YAF框架是用C开发的,属于PHP的扩展框架: 2 YAF的性能相对于源生PHP,性能只降低不到 ...

  9. 在windows系统下安装oracle 11g

     oracle 11g 安装在windows server 2012 系统下. 最近,需要配置数据库,要求在windows操作系统下,安装oracle 11g 数据库,因为以前没有安装过,所以成功后, ...

  10. Xcode.Subproject.And.Framework

    1. Easy Xcode Static Library Subprojects and Submodules http://www.blog.montgomerie.net/easy-xcode-s ...