java中类型通配符上限定(? extends T)指什么呢?
下文笔者讲述类型通配符上限定的简介说明,如下所示
例:
例:
//定义一个Person类
class Person
{
private String name;
public Person(String name){
this.name = name;
}
public String getNmae(){
return this.name;
}
}
// 定义一个Student 并继承 Person
class Student extends Person
{
Student(String name){
super(name);
}
}
main方法如下
public static void main(String[] args) {
Arraylist<Person> a1 = new ArrayList<Person>();
a1.add(new Person("java265-1"));
a1.add(new Person("java265-2"));
a1.add(new Person("java265-3"));
printMethod(a1);
//a2中存储的Person
//存在继承的话
//也能放Student
//等号右边只能存Student
//无法存储worker.类型安全问题。左右两边要一致
ArrayList<Student> a2 = new ArrayList<Student>();
a2.add(new Student("java265--1"));
a2.add(new Student("java265--2"));
a2.add(new Student("java265--3"));
printMethod(a2); // ArrayList<Person> a2 = new ArrayList<Student>();
}
public static void printMethod(ArrayList< Person> a1){
Iterator<Person> it = a1.iterator();
while(it.hasNext()){
System.out.println(it.next().getNmae());
}
}
如果想一个方法既能打印Student,Person 此时我们可以使用"上限符" ? extends T为泛型上限定: 可以接收T和T的子类
public static void printMethod(ArrayList<? extends Person> a1){
Iterator<? extends Person> it = a1.iterator();
while(it.hasNext()){
System.out.println(it.next().getNmae());
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


