8-4 泛型类型变量的限定

package generic;

import java.io.Serializable;

public class GenericTwo<T> {

    
    private T min;
    private T max;
    
    
    public GenericTwo(T min, T max) {
        super();
        this.min = min;
        this.max = max;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }
    
    /**
     * T extends BoundTying T是绑定类型的子类型
     * T和绑定类型可以是接口或者类
     * 一个类型或者通配符有多个限定,用&分开
     * @param a
     * @return
     */
    
    public static < T extends Comparable<T> & Serializable > GenericTwo<T> minMax(T[] a){
        
        if (a == null || a.length == 0) {
            return null;
        }
        
        T min = a[0];
        T max = a[0];
        for (int i = 0; i < a.length; i++) {
            if (min.compareTo(a[i])>0) {
                min = a[i];
            }
            if (max.compareTo(a[i])<0) {
                max = a[i];
            }
        }
        
        return new GenericTwo<T>(min, max);
    }

}

 

posted @ 2018-01-22 01:52  aLa神灯  阅读(113)  评论(0编辑  收藏  举报