泛型程序设计---泛型类的定义

泛型程序设计,程序设计都明白什么意思,那泛型呢?什么是泛型?

所谓泛型是指:额...好吧,说不清...举个例子吧:古代的宗教道教中有一句话,道生一,一生二,二生三,三生万物。这里的道即对应程序设计中的泛型,泛型很抽象,我也说不出所以然...(大家可以在文章下方留言讨论)

那么怎么定义泛型类呢?

语法如下:

  在看语法之前,需要先了解 类型变量的概念。所谓类型变量是指:可以代替任何类型的一个变量,在定义时,可以使用字符(一般大写,且一般用T及其附近的字符);实际,声明泛型类的变量时,需要使用具体的类名代替类型变量。

  class 类名<类型变量...>:类型变量可以有多个,每个类型变量之间用逗号","分开。

以下是 1个类型变量与多个类型变量的泛型类 程序示例:

/**
 * DateAndTime: 2016-12-14下午10:15:03
 */
package chapter12;

/**
 * 测试:1个类型变量 的 泛型类 的定义
 * @author Administrator
 *
 */
public class GenericTypeClass {
    
    public static void main(String[] args) {
        String[] words = {"Mary", "had", "a", "little", "lamb"};
        Pair<String> pair = ArrayArg.minmax(words);
        System.out.println("min: "+ pair.getFirst());
        System.out.println("max: "+ pair.getSecond());
    }

}

/**
 * A GenericType Class
 * @author Administrator
 *
 * @param <T>
 */
class Pair<T> {
    
    private T first;
    private T second;
    
    Pair() {
        this.first = null;
        this.second = null;
    }
    
    Pair(T first, T second) {
        this.first = first;
        this.second = second;
    }
    
    public T getFirst() {
        return first;
    }
    public void setFirst(T first) {
        this.first = first;
    }
    public T getSecond() {
        return second;
    }
    public void setSecond(T second) {
        this.second = second;
    }
    
}

class ArrayArg {
    
    public static Pair<String> minmax(String[] t) {
        if(null == t || t.length == 0) return null;
        String min = t[0];
        String max = t[0];
        for(String element : t) {
            if(element.compareTo(min) < 0) min = element;
            if(element.compareTo(max) > 0) max = element;
        }
        return new Pair<>(min, max);
    }
    
}
View Code
/**
 * DateAndTime: 2016-12-14下午10:36:44
 */
package chapter12;

/**
 * 多个类型变量 的 泛型类的定义
 * @author Administrator
 *
 */
public class GenericTypeClass2 {
    public static void main(String[] args) {
        PairMultiTypeParamters<String, Integer> pmtp = new PairMultiTypeParamters<>("hello",0);
        System.out.println("T: " + pmtp.getFirst());
        System.out.println("U: " + pmtp.getSecond());
    }
}

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

 

posted @ 2016-12-14 23:07  yorick  阅读(708)  评论(0编辑  收藏  举报