我有采取了类似并返回可比性和包装另一个是做同样的事情方法的方法:视图绑定与上边界类型绑定不兼容?
def myMethod[T <: Comparable[T]](arg: T): T = otherMethod(arg)
def otherMethod[T <: Comparable[T]](arg: T): T = arg
这将编译,但不会允许我这样称呼myMethod的用int或任何其他类型这需要隐式转换才能实现Comparable。据我了解,鉴于界限旨在解决这类问题,但使用结合
def myMethod[T <% Comparable[T]](arg: T): T = otherMethod(arg)
我得到的编译器错误的观点:
inferred type arguments [T] do not conform to method otherMethod's type parameter bounds [T <: java.lang.Comparable[T]]
到目前为止,唯一的解决方法我已经拿出来就是使用第二种类型参数并且在两者之间施放:
def myMethod[T <% Comparable[T], U <: Comparable[U]](arg: T): T =
otherMethod(arg.asInstanceOf[U]).asInstanceOf[T]
这个很有效,但很丑。有没有更好的办法?
1.不,不幸的是,otherMethod在第三方库中定义。 2.是!这似乎工作。谢谢! – ethzero
很高兴能帮到你:-) –
其实,我说的太快了......第二种解决方案的确可以编译,但我仍然无法用Int来调用它。这里是错误:“类型参数[Int,Int]不符合方法myMethod的类型参数bounds [U <:java.lang.Comparable [U],T]” – ethzero