super和extends的感想

  • ? extends T关键字代表的是上限,表示泛型参数为T以及T的子类,就可以直接get获取T类型的数据(因为子类可以转换为父类,统一返回父类), 同时这里不能添加,因为添加的话集合不能判断该参数实际类型是什么(比如A,B两个类,A是B的父类,List<? extends A> list = new ArrayList<>();如果我们get的话可以获取到A或者B,并且B由于是A的子类,可以转换为A,所有get出来就是A,但是如果添加元素,我们不能确定这个集合是A集合还是B集合)
  • ? super T 关键字代表下限,表示泛型参数最低为T以及T的父类,如果get出来就是最终父类Object,因为只确定了下限,上限不确定,就将子类通过最终父类返回回来。如果添加元素的话就只可以添加T的子类,因为只有T的子类才能确保下限最终为T(所有T的子类能转换为T),如果是T的父类,下限又会上升。(比如A,B两个类,A是B的父类,List<? super B> list = new ArrayList<>();如果我们get的话可以获取到A,B以及其父类,A,B以及其父类都能转换为Object,所以返回Object,如果添加的话我们能确定我们的下限是B,只有添加的元素都能转换为B,才能添加进去,即B的子类)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在泛型中,superextends是用来限制泛型类型参数的边界的关键字。 super关键字用于限制泛型类型参数的下限,表示该泛型类型参数必须是指定类型或指定类型的父类。例如,可以使用super关键字来定义一个泛型类,该泛型类的类型参数必须是Integer类型或Integer的父类。\[2\] extends关键字用于限制泛型类型参数的上限,表示该泛型类型参数必须是指定类型或指定类型的子类。例如,可以使用extends关键字来定义一个泛型类,该泛型类的类型参数必须是Number类型或Number的子类。\[3\] 在泛型中,使用? extends A来表示一个只读型容器,其中的元素都是A类型或A的子类型。这样可以提供泛型协变,提高代码的复用性。例如,可以定义一个List<? extends A>类型的变量,它可以引用一个ArrayList<A>、ArrayList<B>或ArrayList<C>对象。\[1\] 而使用? super B来表示一个只写型容器,其中的元素都是B类型或B的父类型。这样可以提供泛型逆变,用于只写操作。例如,可以定义一个List<? super B>类型的变量,它可以引用一个ArrayList<A>对象。\[1\] #### 引用[.reference_title] - *1* [Java 泛型 ? extends 与 ? super](https://blog.csdn.net/qq_41490274/article/details/122886351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Java泛型中extendssuper的理解](https://blog.csdn.net/helloxiefei/article/details/129088874)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值