善疑人者,人亦疑之;善防人者,人亦防之。——刘基

之前写的Comparable解决泛型限定问题

遇到了这种情况:

image-20221209133422361

这是因为LocalDate没有实现Comparable<LocalDate>

而是由其实现的接口ChronoLocalDate去继承的Comparable<ChronoLocalDate>

并且LocalDate去实现的Serializable,而不是ChronoLocalDate

image-20221209133551223

我们这里直接用的T extends Comparable<T>,此处传了LocalDate就是extends Comparable<LocalDate>

和实现Serializable的不是同一层级,所以我们需要指定为Comparable<? super T>,这个意思就是说允许Comparable里的类型是它的父类或者接口,具体superextends区别可以看泛型的super和extends

image-20221209134017920

改成Comparable<? super T>后,编译通过