gpt4 book ai didi

java - 什么是<? super T> 语法?

转载 作者:IT老高 更新时间:2023-10-28 11:35:40 24 4
gpt4 key购买 nike

我无法理解以下语法:

public class SortedList< T extends Comparable< ? super T> > extends LinkedList< T >

我看到 SortedList 类扩展了 LinkedList。我只是不知道是什么

T extends Comparable< ? super T>

意思。

目前我对它的理解是,类型 T 必须是实现 Comparable 的类型...但是 < ? super T > 是什么? ?

最佳答案

泛型中的super与extends相反。不是说可比较的泛型类型必须是 T 的子类,而是说它必须是 T 的父类(super class)。区别很重要,因为 extends 告诉你可以从类中得到什么(你至少得到这个,也许是一个子类)。 super 告诉你你可以在类中加入什么(最多这个,也许是一个父类(super class))。

在这种特定情况下,它的意思是该类型必须实现其自身或其父类(super class)的可比较性。所以考虑 java.util.Date。它实现了Comparable<Date> .但是 java.sql.Date 呢?它实现了Comparable<java.util.Date>也是。

如果没有 super 签名,SortedList 将无法接受 java.sql.Date 的类型,因为它没有实现自身的 Comparable,而是实现了自身的父类(super class)。

关于java - 什么是<? super T> 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2827585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com