java 中的通配符泛型允许使用通配符来表示未知类型,有上限(? extends type)和下限(? super type)两种通配符:上限通配符表示通配符类型扩展自给定类型,限制泛型类型只能是给定类型的子类或本身。下限通配符表示通配符类型是给定类型的超类或本身,限制泛型类型只能是给定类型的父类或本身。

Java 中的通配符泛型
通配符泛型为 Java 泛型提供了使用通配符来表示未知类型的功能。它补充了对特定类型参数化的限制,允许编写更通用的代码。
上限和下限通配符
立即学习“Java免费学习笔记(深入)”;
有两种通配符:上限和下限。
上限通配符(? extends Type):表示通配符类型扩展自给定类型。它限制了泛型类型只能是给定类型的子类或其本身。
下限通配符(? super Type):表示通配符类型是给定类型的超类或其本身。它限制了泛型类型只能是给定类型的父类或其本身。
通义万相
通义万相,一个不断进化的AI艺术创作大模型
596 查看详情
语法
要使用通配符泛型,请在泛型声明中使用通配符符号(?),后跟可选的上限或下限界限:
// 上限通配符 // 下限通配符
实战案例
考虑一个比较两个列表元素的比较器:
public class Comparator { public int compare(T o1, T o2) { if (o1 == null || o2 == null) { return o1 == null ? o2 == null ? 0 : -1 : 1; } return o1.compareTo(o2); }}
此比较器适用于任何实现了 Comparable 接口的类,但假设我们希望使用一个未知类型的单个比较器来比较不同的列表。我们可以使用上限通配符:
public class GenericComparator<? extends Comparable> { public int compare(T o1, T o2) { if (o1 == null || o2 == null) { return o1 == null ? o2 == null ? 0 : -1 : 1; } return o1.compareTo(o2); }}
现在,这个比较器可以与任何类型(只要它是 Comparable)一起用于列表比较:
List list1 = Arrays.asList(1, 2, 3);List list2 = Arrays.asList("a", "b", "c");GenericComparator comparator = new GenericComparator();System.out.println(comparator.compare(list1.get(0), list2.get(0))); // -1
以上就是Java 中的通配符泛型是什么?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/453023.html
微信扫一扫
支付宝扫一扫