【发布时间】:2019-05-02 10:49:03
【问题描述】:
假设我下面有一个案例类
case class SomeCaseClass[M] private (
value: String
)
在另一个文件中,我有以下特征和对象。
trait SomeTrait[A] {
def get(oldId: String): A
:
}
object SomeObject {
private[this] def init[A](): SomeTrait[A] = new SomeTrait[A] {
def get(oldId: String): A = id(oldId)
:
}
val aaa: SomeTrait[String] = init[String]()
val bbb: SomeTrait[SomeCaseClass[String]] = init[SomeCaseClass[String]]()
}
我应该如何修改代码,以便将 init 方法限制为仅与 SomeCaseClass[_] 类型一起使用,而不是与上面的 String 等任何类型一起使用?
理想情况下,对代码进行一些修改,val aaa: SomeTrait[String] = init[String]() 行应该会导致编译错误。
【问题讨论】:
标签: scala