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;
}
java 实例化泛型且赋值的更多相关文章
- Java反射给泛型集合赋值
Java反射给泛型集合赋值 泛型 Java泛型简单描述下: 比如创建一个List集合,我想在里边只放Student对象信息,就需要写成 List<Student> studentList ...
- java基础-泛型1
浏览以下内容前,请点击并阅读 声明 泛型的使用能使类型名称作为类或者接口定义中的参数,就像一般的参数一样,使得定义的类型通用性更强. 泛型的优势: 编译具有严格的类型检查 java编译器对于泛型代码的 ...
- java基础-泛型举例详解
泛型 泛型是JDK5.0增加的新特性,泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数.这种类型参数可以在类.接口.和方法的创建中,分别被称为泛型类.泛型接口.泛型方法. 一.认识泛型 在没 ...
- java<T>泛型
泛型 1.泛型的概述 在JDK1.5之前,把对象放入到集合中,集合不会记住元素的类型,取出时,全都变成Object类型.泛型是jdk5引入的类型机制,就是将类型参数化,它是早在1999年就制定的jsr ...
- Java中泛型的详细解析,深入分析泛型的使用方式
泛型的基本概念 泛型: 参数化类型 参数: 定义方法时有形参 调用方法时传递实参 参数化类型: 将类型由原来的具体的类型参数化,类似方法中的变量参数 类型定义成参数形式, 可以称为类型形参 在使用或者 ...
- Java中泛型 类型擦除
转自:Java中泛型是类型擦除的 Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就是说所有泛型参数类 ...
- 跟着刚哥梳理java知识点——泛型(十三)
一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: public class GenericTest { public static void main(String[] a ...
- 【Java】泛型学习笔记
参考书籍 <Java核心技术:卷1> 泛型, 先睹为快 先通过一个简单的例子说明下Java中泛型的用法: 泛型的基本形式类似于模板, 通过一个类型参数T, 你可以"私人定制&qu ...
- Java学习--泛型
个人理解,所谓的泛型就是将数据类型像参数(称为类型参数或者泛型参数)一样传入类,接口或者方法中,这个类型参数可以当作普通的数据类型,进行变量的声明(成员变量,局部变量(包括方法参数)),指明返回值类型 ...
随机推荐
- Python locals() 函数
Python locals() 函数 Python 内置函数 描述 locals() 函数会以字典类型返回当前位置的全部局部变量. 对于函数, 方法, lambda 函式, 类, 以及实现了 __c ...
- joinablequeue模块 生产者消费者模型 Manager模块 进程池 管道
一.生产者消费者 主要是为解耦(借助队列来实现生产者消费者模型) import queue # 不能进行多进程之间的数据传输 (1)from multiprocessing import Queue ...
- form表单的默认提交行为
一 如果<form></form>表单中只有一个<input type="text"/>,则使文本框获取焦点,并单击回车,form会自动提交. ...
- 【校招面试 之 C/C++】第19题 C++ STL(一)
容器名称 说明 vector 典型的序列容器,C++标准严格要求次容器的实现内存必须是连续的,唯一可以和标准C兼容的stl容器,任意元素的读取.修改具有常数时间复杂度,在序列尾部进行插入.删除是常 ...
- Loitor_产品(二)校准立体摄像机
[1]Loitor VI Sensor 可以通过 ROS 自自带的双目相机标定工工具 cameracalibrator.py 来标定相机内参,详细过程http://wiki.ros.org/camer ...
- windows常用运行命令总结
开始→运行→命令集锦 winver---------检查Windows版本 wmimgmt.msc----打开windows管理体系结构(WMI) wupdmgr--------windows更新程序 ...
- pthread_exit pthread_join
int pthread_join(pthread_t thread, void **retval); int pthread_detach(pthread_t thread); void pthrea ...
- iOS.AVCaptureSession
AVCaptureSession的使用容易freeze的问题 1. http://stackoverflow.com/questions/11905505/avcapturesession-stop- ...
- usaco oct09 Watering Hole
Farmer John希望把水源引入他的N (1 <= N <= 300) 个牧场,牧场的编号是1~N.他将水源引入某个牧场的方法有两个,一个是在牧场中打一口井,另一个是将这个牧场与另一个 ...
- crontab定时任务操作
一.查看定时任务 crontab -l 二.添加定时任务 crontab -e (一)执行外部链接 //每隔10分钟执行1次 */ * * * * /usr/bin/curl "http:/ ...