java
2022-12-09
2022-12-09
善疑人者,人亦疑之;善防人者,人亦防之。——刘基
之前写的Comparable
解决泛型限定问题
遇到了这种情况:
这是因为LocalDate
没有实现Comparable<LocalDate>
而是由其实现的接口ChronoLocalDate
去继承的Comparable<ChronoLocalDate>
并且LocalDate
去实现的Serializable
,而不是ChronoLocalDate
我们这里直接用的T extends Comparable<T>
,此处传了LocalDate
就是extends Comparable<LocalDate>
和实现Serializable
的不是同一层级,所以我们需要指定为Comparable<? super T>
,这个意思就是说允许Comparable
里的类型是它的父类或者接口,具体super
和extends
区别可以看泛型的super和extends
改成Comparable<? super T>
后,编译通过