泛型的边界

简介: 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行做些改变,会有如下报错:


泛型参数中的问号

相关文章
java泛型与迭代器的关系
java泛型与迭代器的关系
【C++迭代器深度解析】C++迭代器类型之间的继承关系与反向迭代器的独特性
【C++迭代器深度解析】C++迭代器类型之间的继承关系与反向迭代器的独特性
143 0
Kotlin 范型之泛型约束、类型投影、星号投影
Kotlin 范型之泛型约束、类型投影、星号投影
461 0
AnonymousType匿名类型和对象之间的转换
本文转载:http://www.cnblogs.com/dean-Wei/p/3150553.html 一、匿名对象转换为对象。 1、问题: 2、解决方案:强制指定类型。 解决之。       二、 对象转换为匿名对象。
727 0
【Java 泛型】使用上下边界通配符解决泛型擦除问题
【Java 泛型】使用上下边界通配符解决泛型擦除问题
256 0
04-📝C++核心语法|面向对象2【友元、内部类与局部类、强化训练(数组类封装)、运算符重载、仿函数、模板、类型转换、 C++标准、错误&&异常、智能指针】
复习`C++核心语法`,且适当进行汇编探索底层实现原理,进一步夯实基础,为以后的`底层开发`、`音视频开发`、`跨平台开发`、`算法`等方向的进一步学习埋下伏笔。
04-📝C++核心语法|面向对象2【友元、内部类与局部类、强化训练(数组类封装)、运算符重载、仿函数、模板、类型转换、 C++标准、错误&&异常、智能指针】
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等