泛型和子类继承

package test.com.atguigu.javase.lesson8;

import com.atguigu.javase.lesson8.Person;
import com.atguigu.javase.lesson8.Student;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;

/** 
* GenericAndExtendsTest Tester.
*/ 
public class GenericAndExtendsTestTest {

    @Test
    public void testGenericAndExtends(){
        Object[] objects = new Object[10];
        Person[] persons = new Person[10];

        //Object是Person的父类,则Object的数组也是Person数组的父类
        objects = persons;

        List<Object> objectList = new ArrayList<>();
        List<Person> personList = new ArrayList<>();
        //Object是Person的父类,但List<Object>却不是List<Person>的父类
        //用反证法:若可以,则意味着可以向objectList中放入任何类型的对象,而从personList中
        //获取的确是Person类型的对象。这不可能。
        //objectList = personList; //报错

        printPersons(personList);

        List<Student> studentList = new ArrayList<>();
        //不能传入studentList,理由同上
        //printPersons(studentList);

        printPersons2(studentList);
    }

    /**
     * 要求传入的参数必须是Person类型的List或Person子类类型的List
     * 即:List<Person> persons 或 List<Student> stus
     * 带通配符的集合的泛型声明
     * @param persons
     */
    public void printPersons2(List<? extends Person> persons){

    }   

    public void printPersons(List<Person> persons){

    }
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值