Contents

18.1. 泛型的使用

racing_cycle.java

package com.a51work.cn;

import java.util.ArrayList;


/**
 * ArrayList集合默认接收的元素类型为Object类型,通过泛型对这个ArrayList集合里的元素的类型进行了设置,
 * 使得ArrayList集合默认的元素类型为String类型,在存入和取出新元素的时候就不用转型了。

 * 使用泛型, 正如上面代码所示, 能使代码看起来灵活; 容易管理, 不容易产生错误。
 * 使用泛型能使代码量减少, 能产生很多公共代码。
 * 使用泛型在代码编译的时候能进行类型的检查并自动转换, 使代码的运行效率得到提高。
 * 使用泛型在编译进行自动转换的时候出现了错误, 会进行错误提示。
 * 使用泛型的时候参数只能是类的类型, 不能是简单类型。
 * 使用泛型的时候参数可以有多个。
 * 使用泛型的时候参数也能继承别的类型。
 */
public class racing_cycle {
    // String类型的成员变量n
    public String n = "100";

    public static void main(String[] args) {
        // 实例化类
        racing_cycle h1 = new racing_cycle();
        // 创建一个ArrayList技巧和对象
        ArrayList<String> a1 = new ArrayList<String>();
        // 向集合h1里添加元素,把n的值100添加进去
        a1.add(h1.n);
        // 取出数据转型赋给s
        String s= a1.get(0);
        // 打印并显示结果
        System.out.println(s);
    }

}

OverClass.java

package com.a51work.cn;

// 定义泛型类
public class OverClass<T> {
    //定义泛型成员变量
    private T over;

    //设置getxx()方法
    public T getOver() {
        return over;
    }

    //    设置setxx()方法
    public void setOver(T over) {
        this.over = over;
    }

    public static void main(String[] args) {
        // 实例化一个Boolean型的对象
        OverClass<Boolean> over1 = new OverClass<Boolean>();
        //实例化一个Float型的对象
        OverClass<Float> over2 = new OverClass<Float>();
        // 不需要进行类型转换
        over1.setOver(true);
        over2.setOver(12.3f);
        //不需要进行类型转换
        Boolean b = over1.getOver();
        Float f = over2.getOver();
        System.out.println(b);
        System.out.println(f);

    }
}

ArrayClass.java

package com.a51work.cn;

/**
 * 定义泛型数组时,声明数组类型
 * @param <T>
 */
public class ArrayClass<T> {
    private T[] array;      // 定义泛型数组

    //设置setxx方法()为成员数组赋值
    public void setArray(T[] array) {
        this.array = array;
    }

    //获取成员数组
    public T[] getArray() {
        return array;
    }

    public static void main(String[] args) {
        ArrayClass<String> a = new ArrayClass<String>();
        String[] array = {"成员1", "成员2", "成员3", "成员4", "成员5"};
        a.setArray(array);
        for (int i = 0; i < a.getArray().length; i++) {
            // 调用getArray()方法返回数组中的值
            System.out.println(a.getArray()[i]);
        }
    }
}