我希望有一个接受2个参数的方法,这些参数是Comparable,compare和return结果。这是方法:
def test[T <: Comparable[T]](a1: T, a2: T): Int = a1.compareTo(a2)
但使用LocalDate
时出现问题,因为LocalDate与其他LocalDate
无法比较,因此与ChronoLocalDate
相当。当我试着像这样打电话时:
test(LocalDate.of(2017,1,2), LocalDate.of(2017, 2, 2))
我收到错误
type arguments [java.time.LocalDate] do not conform to method test's type parameter bounds [T <: Comparable[T]] test[LocalDate](a1, a2)
我理解这个问题,但我不明白如何解决它。
答案 0 :(得分:0)
def test[T <: Comparable[U], U >: T](a1: T, a2: T): Int = a1.compareTo(a2)
然后
test[LocalDate, chrono.ChronoLocalDate](
LocalDate.of(2017,1,2),
LocalDate.of(2017, 2, 2)
)
遗憾的是,你需要在这里明确提供类型参数
答案 1 :(得分:0)
说“T
必须与T
的某些超类型相比”:
def test[T <: Comparable[_ >: T]](a1: T, a2: T): Int = a1.compareTo(a2)