老师,能不能讲一下?和T的区别
老师,能不能讲一下通配符?和经常使用到的T有什么区别
还有,
List<T extends Number> list1 List<? extends Number> list2
这样的用法有什么区别?
正在回答
同学你好,1. 老师不理解同学的意思,同学可重新描述一下。
2. 两者区别
'?' 是通配符。它指的是 一个接口类型 的任何一个子类 类型,当然,也包括这个接口本身的类型。因为‘?’是通配符,因此在类的声明和方法的声明中用到的 ‘?’,是没有关联的。 所以,只要:List<?> get(); 就可以通过编译。
例如,下列场景允许 List的元素可以是 Bar 的任何一个子类的类型
interface Foo { List<? extends Bar> get(); }
'T' 是指在某一给定场合下一个接口的特定实现, 只能代表一个类型。
例如,下列场景意味着,整个接口(类) 仅能处理 Bar 这一个类型(和Bar子类)的对象:
interface Foo<T extends Bar> { List<T> get(); }
祝学习愉快!
同学你好,1、<T>"和"<?>",首先要区分开两种不同的场景:<T>主要用于“声明一个泛型类或泛型方法”。<?>主要用于“使用泛型类或泛型方法”。例如,定义一个泛型类,class School<T>是正确的,但class School<?>就是错误的。
2、T限制了类型,?只是通配符。
<T extends ClassA>表示后续都只能使用T进行某些判断或操作,而<? extends ClassA>表示后续使用时只要是ClassA的子类即可。
课程中<? extends Number> 这里?代表一个未知的类型,但是这个未知的类型实际上是Number的一个子类,Number是这个通配符的上限。而<T extends Number>中的T是Number子类一个确定类型。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星