JAVA泛型方法与类型限定

Posted 三分自留地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA泛型方法与类型限定相关的知识,希望对你有一定的参考价值。

 泛型方法可以定义在普通类中,也可以定义在泛型类中
1 class ArrayAlg{
2     public static <T> T getMiddle(T...a){
3         return a[a.length/2];
4     }
5 }

 

 
注意:类型变量放在修饰符后( public static )
当调用泛型方法时,方法名前尖括号中放入具体的类型
String middle=ArrayAlg.<String>getMiddle("John","Q.","Public");

 

 
大多数情况下,方法调用可以省略<String>类型参数
String middle=ArrayAlg.getMiddle("John","Q.","Public");

 


 
类型变量的限定
有时,类或方法需要对类型变量加以约束
 1 class ArrayAlg{
 2     public static <T> T min(T[] a){
 3         if(a==null||a.length==0) return 0;
 4         T smallest=a[0];
 5         for(int i=1;i<a.length;i++)
 6             if(smallest.compareTo(a[i])>0)
 7                 smallest=a[i];
 8             return smallest;
 9     }
10 }

 

上例min方法内部,变量smallest类型为T,而且smallest必须有compareTo方法程序才能正常运行
解决的方法是限制T实现Comparable接口
public static <T extends Comparable> T min(T[] a)...

 

一个类型变量或通配符可以有多个限定,限定类型用&分隔
T extends Comparable & Serializable

 

以上是关于JAVA泛型方法与类型限定的主要内容,如果未能解决你的问题,请参考以下文章

泛型类型限定和通配符类型限定

java学习笔记9.22(泛型)

java小知识点6

Java泛型/泛型限定

JAVA进阶-泛型

第八章 泛型程序设计