泛型中的super和extends
时间: 2023-09-01 07:09:19 浏览: 99
在泛型中,super和extends是用来限制泛型类型参数的边界的关键字。
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泛型中extends和super的理解](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 ]
阅读全文