Java泛型的简单定义

1.简单的定义泛型类

public class pair<T>{       //java库中用T(U,S)表示任意类型 K,V表示关键字和值 通常大写

    private T first;
    private T second;

    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 = new Value;
    }

    public void setSecond(T newValue){
        second= new Value;
    }
}

用具体的类型替换类型变量就可以实例化泛型类型,例如(Pair<Double>) 泛型可以看成普通类的工厂。
2.简单的定义泛型方法

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

    //有时候一些一些方法需要对类型变量加以约束,例如下面计算数组中的最大元素
    public static <T> T max(T[] a){
        if(a == null || a.length == 0){
            return null;
        }
        T max = a[0];
        for(int i = 1; i< a.length; i++){
            if(max.compareTo(a[i]) < 0){
                max = a[i];
            }
        }
        return max;
    }
    //这个方法有一定的问题,T不一定具有compareTo方法,所以要加一些约束,将T限制为实现了Comparable接口的类  
}

所以应该设置类型变量的限定<T extends BoundingType>表示T应该是绑定类型的子类型。T和绑定类型可以是类,接口。如果有多个限定用”&”来分割:T extends Comparable and Serializable

class ArrayAlg{
    /**
    *以下方法得到一个数组中的一个包含最大和最小T类型的Pair类的实例
    *@param a 一个T类型的数组
    *返回一个Pair包含中最大和最小T的值,或者是空如果传入的数组是空
    **/

    public static <T extends Comparable> Pair<T> minmax(T[] a) {
        //Comparable本身就是一个泛型类型,这里我们忽略其复杂性以及警告
        if(a == null || a.length == 0){
            return null;
        }
        T max = a[0];
        T min = a[0];

        for(int i = 1; i<a.length; i++){
            if(min.compareTo(a[i]) > 0){
                min = a[i];
            }
            if(min.compareTo(a[i]) < 0){
                max = a[i];
            }
        }

        return new Pair<>(min, max);
    }
}

第一次写博客,就当做笔记了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值