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

但是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一次,可能不够灵活;而泛型方法可以在调用的时候指明类型,更加灵活

最新文章

  1. AngularJS模型
  2. [MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键
  3. 2层Xml读取类
  4. 初步窥探Git
  5. 【转】No JVM could be found on your system解决方法
  6. Android Animation ---TranslateAnimation
  7. kill tomcat process in window
  8. JAVA之序列化A
  9. Word Ladder II 解答
  10. shell的追踪与调试选项
  11. mysql循环插入数据
  12. Centos发布java的war包后,无法访问发布的工程
  13. android 错误处理思维随笔
  14. kdevelp 导入makefile工程
  15. 有用的linux命令集锦
  16. MyBatis环境配置及入门
  17. docker 入門
  18. .net验证是否合法邮箱和ip地址的方式
  19. JS——EasyuiCombobox三级联动
  20. 【cocos2d-x 手游研发小技巧(4)与Android混编实现换“头像图片”】

热门文章

  1. 助教培训第四次作业——熟练掌握GitHub及Git的使用方法
  2. 基于LPCXpresso54608开发板创建Embedded Wizard UI应用程序
  3. windows程序意外关闭子订重启脚本
  4. 【noi2019集训题1】 脑部进食 期望dp+高斯消元
  5. [2019南昌邀请赛网络赛D][dp]
  6. 47、[源码]-Spring容器创建-初始化MessageSource
  7. 学到了林海峰,武沛齐讲的Day23-完
  8. JAVA的变量,数据类型与运算符
  9. 洛谷 P2822 组合数问题 题解
  10. BZOJ 4300: 绝世好题 二进制