Java-泛型

来源:互联网 发布:英文论文格式 知乎 编辑:程序博客网 时间:2024/05/29 14:08

使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码更具有更好的安全性和可读性。

    ArrayList list = new ArrayList();        list.add("string");        list.add(1);

不使用泛型的情况下ArryList 接受的参数都会转化为object类型,这样在取出存取元素的时候就需要进行转换,没有限定传入的元素类型,取出元素时转换会出现异常。

使用泛型的话,可以限定传入的元素类型,在编译期就可以检测到错误,在取出的时候就不需要在进行类型转换。这样做是安全的。

ArrayList<String> list = new ArrayList<String>();        list.add("string");        list.add(1);  //第二个add 编译器会报 The method add(int, String) in the type ArrayList<String> is not applicable for the arguments (int)

自定义泛型类:

//用T作为类型变量 这样就可以接受多种类型public class Pair<T> {    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 void setFirst(T first) {        this.first = first;    }    public T getSecond() {        return second;    }    public void setSecond(T second) {        this.second = second;    }}
public class PairTest1 {    public static void main(String[] args) {        String[] words = { "Mary", "had", "a", "little", "lamb" };        Pair<String> mm = ArrayAlg.minMax(words);        System.out.println("min =  " + mm.getFirst());        System.out.println("max = " + mm.getSecond());        System.out.println(ArrayAlg.<String>getMiddle("s","a","f"));        int[] numbers = {1,5,6,8,9};        System.out.println(ArrayAlg.min(words));    }}public class PairTest1 {    public static void main(String[] args) {        String[] words = { "Mary", "had", "a", "little", "lamb" };        //这样可以同时处理string类型和integer类型的数据了        System.out.println(ArrayAlg.<String> getMiddle("s", "a", "f"));        System.out.println(ArrayAlg.<Integer> getMiddle(1, 2, 3));        System.out.println(ArrayAlg.min(words));    }}class ArrayAlg {    public static <T> T getMiddle(T... a) {        return a[a.length / 2];    }    //extends 用来限定类型 只有实现了Comparable接口的类型才能通过 可以有多个 &连接    public static <T extends Comparable> T min(T[] a) {        if (null == a || a.length == 0) {            return null;        }        T smallest = a[0];        for (int i = 1; i < a.length; i++) {            if (smallest.compareTo(a[i]) > 0) {                smallest = a[i];            }        }        return smallest;    }}
0 0
原创粉丝点击