Java泛型小结(二)
发布时间: 2012-08-21 13:00:21 作者: rapoo
Java泛型总结(二)
类型变量的限定一个场景,class MyClass {? ? ?public static <T> T get(T[] a){? ? ? ? ? ……? ? ? ? ? a[0].compareTo(.... // 数组a的元素调用compareTo方法进行比较? ? ? ? ? ……? ? ?}}问题出现在这里,我们没办法保证T类型拥有方法compareTo;但是,我们有一个办法解决,那就是让T实现Comparable接口。现在,根据现有的api,我们可以使用T extends?Comparable来达到限定的目的。这时候,有了这样的形式:<T?
extends?Bounding Type>,表示T应该是绑定类型(Bounding Type)的子类型。T和绑定类型可以是类或者接口。当然,可以有多个限定类型,例如:T extends?Comparable & Serializable 用&符号分隔开
class?MyArray {????
public?
static?<T?
extends?Comparable> T min(T[] array) {??????? T min = array[0];????????
for?(T element : array) {????????????
if?(min.compareTo(element) > 0) {??????????????? min = element;??????????? }??????? }????????
return?min;??? }}
因为有T?
extends?Comparable的缘故,这里数组的元素就能够调用compareTo方法,不会产生编译错误。