【发布时间】:2020-07-22 16:42:50
【问题描述】:
我有一个这样的trait:
trait FirstTrait[U] {
val myVal: U
}
还有一个如下:
trait SecondTrait[T <: firstTrait[U],U]
对于我正在做的实现:
case class FirstImpl(myVal: MyType) extends FirstTrait[MyType]
object SecondImpl extends SecondTrait[FirstImpl,MyType]
有没有更好的方法来做同样的事情,如果可能的话,我想像这样简化我对第二个特征的实现:
object SecondImpl extends SecondTrait[FirstImpl]
编辑
我在两个函数中都使用了:
def func[T <: FirstTrait[U],U](myVal: T): U
当我使用存在类型时,我必须显式类型,否则我会收到 "inferred type arguments [FirstImpl,Nothing] do not conform to method func" 错误。
所以这就是我必须实现该功能的方式:
val myVal : MyType = MyType()
func[FirstImpl,MyType](FirstImpl(myVal))
有什么可以简化的吗?
【问题讨论】:
标签: scala generics type-inference type-bounds