gpt4 book ai didi

java - 为什么这会将类型解析为接口(interface)?

转载 作者:太空宇宙 更新时间:2023-11-04 06:07:16 24 4
gpt4 key购买 nike

我尝试为 Object 实现通用 max(a, b) 方法,该方法实现 Comparable 如下:

public static <T extends Comparable<T>> T max(T o1, T o2) {
return o1.compareTo(o2) >= 0 ? o1 : o2;
}

它适用于,例如String,但对于java.time.LocalDate,类型参数解析为ChronoLocalDate,我不明白为什么:

LocalDate date1 = ..., date2 = ...;
LocalDate ld = CompareUtils.max(date1, date2); // compile error here

错误是“类型不匹配:无法从 ChronoLocalDate 转换为 LocalDate”。我该如何修复它?

最佳答案

我找到了解决方案,我需要添加? super T 到类型参数声明:

public static <T extends Comparable<? super T>> T max(T o1, T o2) {
return o1.compareTo(o2) >= 0 ? o1 : o2;
}

关于java - 为什么这会将类型解析为接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29161489/

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