java中的泛型方法

原创 2013年12月03日 15:26:13

Java中的泛型方法 

       泛型是什么意思在这就不多说了,而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一次,可能不够灵活;而泛型方法可以在调用的时候指明类型,更加灵活。

 


相关文章推荐

java泛型、原始类型、桥接方法

  • 2014年09月16日 14:04
  • 53KB
  • 下载

获取Spring容器中Bean实例的工具类(Java泛型方法实现)

在使用Spring做IoC容器的时候,有的类不方便直接注入bean,需要手动获得一个类型的bean。 因此,实现一个获得bean实例的工具类,就很有必要。 以前,写了一个根据bean的名称和类型获取b...

java 泛型方法使用示例

  • 2010年06月21日 16:10
  • 59KB
  • 下载

Java泛型<T> t类与方法

泛型就是变量类型的参数化。在使用泛型前,存入集合中的元素可以是任何类型的,当从集合中取出时,所有的元素都是Object类型,需要进行向下的强制类型转换,转换到特定的类型。而强制类型转换容易引起运行时错...

Java 泛型的类型擦除和桥方法

两种泛型处理方式: Code specialization。在实例化一个泛型类或泛型方法时都产生一份新的目标代码(字节码or二进制代码)。例如,针对一个泛型list,可能需要 针对string,in...

Java静态泛型方法

Java在JDK 5中引入了泛型,使用起来方便了很多,下面是一段很常见的泛型使用: ListString> list = new ArrayListString>(); 泛型方法使用 不仅集合中...

Java高级教程:泛型方法

每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。...

使用Java泛型构造模板方法模式

原文地址:http://blog.csdn.net/liushuijinger/article/details/38682999 如果你发现你有很多重复的代码,你可能会考虑用模板方法...

[Java]泛型方法思路整理

[泛型小结]小的开始学习Java,前几天遇到一题,一时没搞清楚,经过几番思量,终于看明白,今整理如下,就当做了一个笔记,如有整理的有什么不周之处,还请各位指点一二,在此先这么谢过了…...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java中的泛型方法
举报原因:
原因补充:

(最多只允许输入30个字)