读书笔记——《Java核心技术卷一》——泛型(一)

一、泛型类

一个泛型类就是具有一个或多个类型变量的类。例子:

public class Pair<T>
{
    public Pair(){
        first = null; second = null;
    }
    public Pair(T first, T second){
        this.first = first;
        this.second = second;
    }
    public T getFirst(){
        return first;
    }
    public T getSecond(){
        return second;
    }
    public void setFirst(T newValue){
        first = newValue;
    }
    public void setSecond(T newValue){
        second = newValue;
    }
    private T first;
    private T second;
}

T是类型变量,用尖括号括起来,放在雷蒙德后面跟。泛型类可以有多个类型变量。

public class Pair<T, U>{...}

类定义中的类型变量指定方法的返回类型以及域和局部变量的类型。

private class first<T, S, U>{...}

变量E表示集合的元素类型,K和V分别表示关键字与值的类型。T(需要时还可以用临近的字母U和S)表示任意类型。

用具体的类型替换类型类型变量就可以实例化泛型类型,例如

new Pair<String>()
构造函数相当于变成这样
Pair<String>(String)
Pair<String>(String, String)

T被替换成了其他类

二、泛型方法

class ArrayAlg
{
    public static <T> T getMiddle(T[] a)
    {
        return a[a.length/2];
    }
}

注意:类型变量放在修饰符的后面,返回类型的前面。

三、类型变量的限定

public static <T extends Comparable>T min(T[] a) ...

T将被限制为实现了Comparable接口,类型参数和后面的绑定类型可以是类也可以是接口,有多个限定类型可以使用&分隔绑定类型变量。限定类型列表中之多有一个类,且必须放在第一位,

猜你喜欢

转载自blog.csdn.net/let4897/article/details/82288238
今日推荐