泛型是什么意思在这就不多说了,而Java中泛型类的定义也比较简单,例如:public class Test<T>{}。这样就定义了一个泛型类Test,在实例化该类时,必须指明泛型T的具体类型,例如:Test<Object> t = new Test<Object>();,指明泛型T的类型为Object。

但是Java中的泛型方法就比较复杂了。

泛型类,是在实例化类的时候指明泛型的具体类型;泛型方法,是在调用方法的时候指明泛型的具体类型。

定义泛型方法语法格式如下:
Java中的泛型方法

调用泛型方法语法格式如下:
Java中的泛型方法

说明一下,定义泛型方法时,必须在返回值前边加一个<T>,来声明这是一个泛型方法,持有一个泛型T,然后才可以用泛型T作为方法的返回值。

Class<T>的作用就是指明泛型的具体类型,而Class<T>类型的变量c,可以用来创建泛型类的对象。

为什么要用变量c来创建对象呢?既然是泛型方法,就代表着我们不知道具体的类型是什么,也不知道构造方法如何,因此没有办法去new一个对象,但可以利用变量c的newInstance方法去创建对象,也就是利用反射创建对象。

泛型方法要求的参数是Class<T>类型,而Class.forName()方法的返回值也是Class<T>,因此可以用Class.forName()作为参数。其中,forName()方法中的参数是何种类型,返回的Class<T>就是何种类型。在本例中,forName()方法中传入的是User类的完整路径,因此返回的是Class<User>类型的对象,因此调用泛型方法时,变量c的类型就是Class<User>,因此泛型方法中的泛型T就被指明为User,因此变量obj的类型为User。

当然,泛型方法不是仅仅可以有一个参数Class<T>,可以根据需要添加其他参数。

为什么要使用泛型方法呢?因为泛型类要在实例化的时候就指明类型,如果想换一种类型,不得不重新new一次,可能不够灵活;而泛型方法可以在调用的时候指明类型,更加灵活。

image
最新2020整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君样:909038429
/./*欢迎加入java交流Q君样:909038429一起吹水聊天

更多相关文章

  1. BigDecima类型数据的处理--Non-terminating decimal expansio
  2. 从模版方法模式到 SPI 演变 :好的思想通用而持久
  3. 探寻泛型方法ClassCastException元凶
  4. 如何使用java语言求一个正整数的平方根?(自定义Sqrt方法)
  5. 五分钟学会java中的基础类型封装类
  6. 设计模式之模板方法模式
  7. 面试必问:String类型为什么设计成不可变的?
  8. Java实现定时任务的三种方法
  9. 服务端开发指南与最佳实战 | 数据存储技术 | MySQL(01)数据类型的

随机推荐

  1. sqlite查询库里所有表名
  2. 使用 pymysql 操作MySQL数据库
  3. ASP.NET 2.0在SQL Server 2005上自定义分
  4. sql server2008 日志收缩 命令行
  5. PLSQL并非所有变量都已绑定
  6. mysql5.7 启用gtid,导致无法创建和删除表
  7. MySQL This function has none of DETERM
  8. MySql WorkBench“执行查询到文本输出”
  9. mysql报错注入(显错注入)整理
  10. mysql自定义排序规则函数——field()