JAVA August 19, 2018

泛型

Words count 3.2k Reading time 3 mins. Read count 0

集合中的元素,可以是任意类型的对象(对象的引用)

如果把某个对象放入集合,则会忽略他的类型,而把它当做Object处理

泛型则是规定了某个集合只可以存放特定类型的对象

并且会在编译期间对进行类型检查

创建一个测试泛型类TestGeneric

public class TestGeneric {
    //声明带有泛型的List属性
    public List<Course> courses;

    public TestGeneric(){
        //实例化courses
        this.courses = new ArrayList<Course>();
    }

在TestGeneric中构造测试增加方法 testAdd()

    public void testAdd(){
        Course cr1 = new Course("1","大学语文");
        courses.add(cr1);
        //泛型集合中,不能添加泛型规定的类型及其子类型以外的对象,否则会报错。
        //courses.add("能否添加一些奇怪的东西呢?!");
        Course cr2 = new Course("2","java基础");
        courses.add(cr2);
    }

在TestGeneric中构造循环遍历的方法 testForEach()

    public void testForEach(){
        for (Course cr: courses){
            System.out.println(cr.cid+":"+cr.cname);
        }
    }

泛型结合可以添加泛型的子类型的对象实例

    public void testChild(){
        ChileCourse ccr = new ChileCourse();
        ccr.cid = "3";
        ccr.cname="我是子类型的课程对象实例";
        courses.add(ccr);
    }

泛型集合中的限定类型不能使用基本数据类型。

可以通过使用包装类鉴定允许存入的基本数据类型。

    public void testBasicType(){
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        System.out.println("基本类型必须使用包装类作为泛型"+list.get(0));
    }

测试类主方法

    public static void main(String[] args){
        TestGeneric tg = new TestGeneric();
        //添加元素
        tg.testAdd();
        //foreach遍历
        tg.testForEach();
        //泛型子类型
        tg.testChild();
        tg.testForEach();
        //泛型可以使用基本类型的包装类
        tg.testBasicType();
    }

新建Couse的继承类ChileCouse

public class ChileCourse extends Course {

}
0%