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()); } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。