java中类型通配符上限定(? extends T)指什么呢?

书欣 Java教程 发布时间:2022-09-01 21:34:29 阅读数:12865 1
下文笔者讲述类型通配符上限定的简介说明,如下所示
例:
//定义一个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());
		}
	}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202209/4302.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者