【发布时间】:2011-08-27 22:47:27
【问题描述】:
我有一个方法,它接受一个 Comparable 并返回一个 Comparable 并包装另一个做同样事情的方法:
def myMethod[T <: Comparable[T]](arg: T): T = otherMethod(arg)
def otherMethod[T <: Comparable[T]](arg: T): T = arg
这可以编译,但不允许我使用 Int 或任何其他需要隐式转换来实现 Comparable 的类型调用 myMethod。据我了解,视图边界旨在解决此类问题,但使用视图边界
def myMethod[T <% Comparable[T]](arg: T): T = otherMethod(arg)
我得到编译器错误:
推断的类型参数 [T] 不符合方法 otherMethod 的类型参数边界 [T <: java.lang.comparable>
到目前为止,我想出的唯一解决方法是使用第二个类型参数并在两者之间进行转换:
def myMethod[T <% Comparable[T], U <: Comparable[U]](arg: T): T =
otherMethod(arg.asInstanceOf[U]).asInstanceOf[T]
这行得通,但它很难看。有没有更好的办法?
【问题讨论】:
标签: scala