使用泛型时LocaDate / LocalDateTime问题

时间:2017-11-20 11:51:57

标签: scala

我希望有一个接受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)

我理解这个问题,但我不明白如何解决它。

2 个答案:

答案 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)