泛型的边界

简介: 1.简述 CharSequence是String的父类,但List<CharSequence>不是List<String> 的父类。同样的,Class<CharSequence>也不是Class<String>的父类。 为了反映泛型类所持有元素的继承关系,可以用到泛型的边界。 void fun(){ List<String

1.简述

CharSequence是String的父类,但List<CharSequence>不是List<String> 的父类。同样的,Class<CharSequence>也不是Class<String>的父类。
为了反映泛型类所持有元素的继承关系,可以用到泛型的边界。
void fun(){
		List<String> list=new ArrayList<>();
		//下行会报错.CharSequence是String的父类但List<CharSequence>不是List<String> 的父类。
		//List<CharSequence> list1=list;
		//下行报错
		//List<? super CharSequence> list2=list;
		//下行不报错
		List<? extends CharSequence> list3=list;
	}
<? entends A>,可以get,可以调用A类的方法。
<? super A>,可以set。

因为擦除移除了类型信息,所以能用无界泛型参数 (即?)调用的方法只是那些可以用Object调用的方法。

泛型中的extends

它将泛型参数限制为某个类型子集,那么就可以调用该类族的一些方法。

泛型参数表中的extends

泛型类的extends

把第32行做些改变,会有如下报错:


泛型参数中的问号

目录
相关文章
|
4月前
|
算法 编译器 C语言
【C++ 迭代器的空类类型 】深入理解C++迭代器类别与空类标签的奥秘
【C++ 迭代器的空类类型 】深入理解C++迭代器类别与空类标签的奥秘
50 0
|
存储 安全 Java
知识单元六 泛型与集合
知识单元六 泛型与集合
159 1
知识单元六 泛型与集合
|
4月前
|
算法 前端开发 安全
深度思考:为什么需要泛型?
深度思考:为什么需要泛型?
41 0
|
4月前
泛型是什么?有什么作用
当我们定义一个变量不确定类型的时候有两种解决方式
30 0
泛型是什么?有什么作用
|
Java Spring
你动了别人的代码边界
前段时间呢,需要和xx公司进行对接。由于手上活比较多没忙不过来,领导就先帮我把接口调试完成了,并写好了相关的demo。然后我根据demo把代码整合进业务系统,并重写了相关代码。后来领导看了我写的代码,发现和他写的的demo不太一样,然后就问我为什么要重写?在一番争论后,领导对我说了句:你到底懂不懂抽象啊,你动了别人的代码边界。
C#编程-104:泛型的开放类型与封闭类型
C#编程-104:泛型的开放类型与封闭类型
C#编程-104:泛型的开放类型与封闭类型
DHL
|
存储 算法 Java
90%人不懂的泛型局限性,泛型擦除,星投影
通过这篇文章你将学习 Kotlin 和 Java 泛型局限性、泛型擦除,泛型信息被擦除了之后,泛型信息保存到哪里,迷惑的通配符和星投影区别
DHL
192 0
90%人不懂的泛型局限性,泛型擦除,星投影
|
Java Kotlin
Kotlin 范型之泛型约束、类型投影、星号投影
Kotlin 范型之泛型约束、类型投影、星号投影
421 0
|
Java 编译器
JDK8在泛型类型推导上的变化
JDK8在泛型类型推导上的变化
|
Java
【Java 泛型】使用上下边界通配符解决泛型擦除问题
【Java 泛型】使用上下边界通配符解决泛型擦除问题
222 0