北京行——java基础加强之泛型

、day3(Java新特性)

1、泛型——泛型就是面向编译器的语法现象,也就是说把错误放在编译阶段,这个地方可以用反射技术,透过泛型,在集合中装入不同类型的元素。

泛型的应用:1、类型安全检查2、编写通用程序java程序(java框架)

泛型集合之间的关系:

 

泛型应用的通用程序

自定义泛型:

public class TestT {
    public static void main(String[] args) {
        String[] test = { "aaa", "bbb", "ccc" };
        change(test, 1, 2);
        for (int i = 0; i < test.length; i++) {
            System.out.println(test[i]);
        }
    }

    public static <T> void change(T array[], int original, int destination) {// 这个地方时定义泛型,增加了程序的通用性
        T temp = array[original];
        array[original] = array[destination];
        array[destination] = temp;
    }
}

这个地方的数组必须是对象类型,泛型可以有两个对象类型<K,V>

类的泛型定义:更能增加程序的重用行,下边这个实例是工具类的抽取

首先定义这个泛型类:

public class TUntils<T> {//把它抽成了工具类,这个地方的,所以下边的方法在定义是不用再加泛型了
    public void change(T array[], int original, int destination) {
        T temp = array[original];
        array[original] = array[destination];
        array[destination] = temp;
    }

这个是个测试:

public class TestT {
    public static void main(String[] args) {
        String[] test = { "aaa", "bbb", "ccc" };
        new TUntils().change(test, 1, 2);
        for (int i = 0; i < test.length; i++) {
            System.out.println(test[i]);
        }
    }

泛型类不对其中的静态方法是无效的

T template E element V value K Key 泛型可以用任意字母,不过就是最好用有意义的

泛型的通配符:(在字面意思就是说,它是任意的泛型类型,举例如下)

    public static void main(String[] args) {
        List<String> test1 = new ArrayList<String>();
        test1.add("你好");
        print1(test1);
        List<Integer> test2 = new ArrayList<Integer>();
        test2.add(5);
        print1(test2);
    }

    private static void print1(List<?> test) {
        for (Object object : test) {
            System.out.println(object);
        }
    }

上边是通配符的比较好的应用。《泛型是任意类型的时候是可以使用通配符》

泛型通配符一般是和上下边界一块使用的,当使用了通配符后就不要使用与类型相关的方法了

通过上下边界,限定通配符的类型的范围:?extends Number  是Number的任意子类型

?super String String的任意父类型

上下边界不能同时使用

在实际的应用中往往是通过这样来使用的

在方法的参数中addAll(Collection<? extends Number>)也就是说可以传递一个装有Number子类型的集合

 

 

 

posted @ 2013-04-15 16:37  蓝冰悠见  阅读(119)  评论(0编辑  收藏  举报