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){
}
}
泛型和子类继承
猜你喜欢
转载自blog.csdn.net/ada_yangyang/article/details/80945037
今日推荐
周排行