Java 泛型的实例化总结

前言: 当我们在做项目的时候 ,搭建框架的时候,会经常用到泛型类来封装一些通用类或工具类。在封装泛型类的过程中,为了提升开发效率及代码简洁,会经常运用泛型内部进行实例化,用以减少代码量或重复操作。

创建泛型类

public class GenericityTest<T,D,E> {T t;D d;E e;
}

1 泛型的实例化

(1)getClass().getGenericSuperclass()).getActualTypeArguments()[0].newInstance();

public void init(){try {Type[] typeArguments = ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments();for(Type type : typeArguments){System.out.println("type:"+type);//打印映射的实际类}Class<T> tClass = (Class<T>) typeArguments[0];Class<D> dClass = (Class<D>) typeArguments[1];Class<E> cClass = (Class<E>) typeArguments[2];this.t = tClass.newInstance();this.d = dClass.newInstance();this.e = cClass.newInstance();} catch ( Exception e) {e.printStackTrace();}}

(2) getConstructor().newInstance()

public void init(){try {Type[] typeArguments = ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments();for(Type type : typeArguments){System.out.println("type:"+type);}T e = (T) ((Class)typeArguments[0]).getConstructor().newInstance();D e = (D) ((Class)typeArguments[1]).getConstructor().newInstance();E e = (E) ((Class)typeArguments[2]).getConstructor().newInstance();} catch ( Exception e) {e.printStackTrace();}}

(3) Class.forName(className).newInstance()

public void init(){try {Type[] typeArguments = ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments();for(Type type : typeArguments){System.out.println("type:"+type);//打印映射的实际类}T t = (T) Class.forName(typeArguments[0].getTypeName()).newInstance();D d = (D) Class.forName(typeArguments[1].getTypeName()).newInstance();E e = (E) Class.forName(typeArguments[2].getTypeName()).newInstance();} catch ( Exception e) {e.printStackTrace();}}

2 注意的是

泛型的实例化不能用于抽象类、接口、数组类、基本类型或void,以及泛型类;

泛型类的泛型类 是什么意思?

例如: HashMap<String,String> 这些方法都不能创建出该对象,如果只是HashMap可以,HashMap<String,String>就不行

最后推荐一个我自己写的MVVM开源项目《Open MVVM》

有问题请私信,留言,或者发送邮件到我扣扣邮箱 qingingrunt2010, 再或者加入扣扣群721765299

Java 泛型的实例化总结相关推荐

  1. java 泛型对象实例化_在java中实例化泛型类型

    慕仙森 在您发布的代码中,T由于您不知道它是什么类型,因此无法创建实例:public class Abc{ public T getInstanceOfT() { // There is no way ...

  2. java new 删除吗,java泛型对象初始化-java泛型对象会实例化吗T t=new T()

    java泛型对象初始化--java泛型对象能实例化吗T t=new T() java中没法得到泛型参数化类型,因为在编译期没法确定泛型参数化类型,也就找不到对应的类字节码文件,自然就不行了 泛型反射的 ...

  3. java泛型程序设计——Varargs 警告+不能实例化类型变量

    [0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java泛型程序设计 的 Varargs 警告+不能实例化类型变量 的知识: [1] Vara ...

  4. java泛型实例化_java基础-泛型举例详解

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

  5. java 泛型 .net_Java基础11:Java泛型详解

    本文对java的泛型的概念和使用做了详尽的介绍. 本文参考https://blog.csdn.net/s10461/article/details/53941091 具体代码在我的GitHub中可以找 ...

  6. 聊一聊Java 泛型通配符 T,E,K,V,?

    欢迎关注方志朋的博客,回复"666"获面试宝典 | 前言 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者 ...

  7. 聊一聊Java 泛型中的通配符 T,E,K,V,?

    点击上方"方志朋",选择"设为星标" 回复"1024"获取独家整理的学习资料 作者:glmapper juejin.im/post/5d57 ...

  8. Java 泛型 T,E,K,V,?,傻傻分不清?

    前言 ​ Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说所操作的 ...

  9. 聊一聊-JAVA 泛型中的通配符 T,E,K,V,?

    前言 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说所操作的数据 ...

  10. java 泛型 窜讲

    一.为什么使用泛型 复用性:泛型的本质就是参数化类型,因而使用编写的泛型代码可以被许多不同类型的对象所复用. 安全性:在对类型Object引用的参数操作时,往往需要进行显式的强制类型转换.这种强制类型 ...

最新文章

  1. iOS开发-照片选择
  2. 学python有哪些书推荐-有哪些Python学习路线值得推荐?线路及书籍推荐都在这里...
  3. 测绘技术的发展与分类简述
  4. wpf 加载html页面,使用MVVM在WPF中显示HTML
  5. MyBatis-07MyBatis注解方式之@Select
  6. 阿里云查看mysql是否安装_阿里云CentOS服务器mysql安装
  7. 08 线性回归 + 基础优化算法【动手学深度学习v2】
  8. P7046-「MCOI-03」诗韵【SAM,倍增,树状数组】
  9. LeetCode 1381. 设计一个支持增量操作的栈(deque/数组)
  10. JavaWeb项目实战(2)安装JDK和Tomcat以及Eclipse构造开发环境
  11. php静态登录界面代码,JSP_JSP登录验证功能的实现,静态的登录界面的设计login.htm - phpStudy...
  12. 社交软件上“你可能认识的人”到底是怎么找到你的?
  13. 通过新浪云部署NideShop微信小程序商城(基于Node.js+MySQL+ThinkJS)
  14. 【Excel-2010】规范录入调查问卷
  15. L2-001 紧急救援(最短路)
  16. c语言char aa 1000,char ** 与char * a[ ] 区别
  17. Vs2010激活 系统延长期限
  18. uni-app设置屏幕亮度
  19. Git 不可不知的常识 (1)
  20. 阿里云ECS后台利用“安全组”屏蔽恶意攻击ip地址

热门文章

  1. 计算机组成原理期末复习【超实用】
  2. 推荐一款轻量级好用的开源PDF阅读器,确实好用~
  3. Ubuntu系统配置Java环境
  4. 基于MVC .NET Core动态角色的授权
  5. TeamView for Linux是这样实现的!
  6. 高校科研管理系统源代码_加强医院科研管理系统提升科研水平
  7. 在Win10系统的服务器上离线安装SQL Server 2012中出现“启用windows功能NetFx3时出错”
  8. 竞品分析2020——铁路售票系统
  9. Wonderware Intouch 2014R2 SP1授权教程
  10. SSH学习之MVC和三层架构的区别