次の問題についてヘルプを探しています。
case class A(val name: String)
class B(name: String) extends A(name)
class Base[T <: A](param: T)
class SubClass[T <: B](param: T)
object Factory {
def create[T <: A](param: T) = {
param.name match {
case "something" => new Base(param)
case "something else" => new SubClass(param)
}
}
}
param サブクラスが予期している (T :< B) と create の T の定義が一致していないため、ファクトリはコンパイルされません。サブクラスのコンストラクターを呼び出しますか? ダウンキャストはどのように見えますか?
明確にするために-サブクラスがparamで構築されている場合、paramは実際にT <: Bです。
ありがとう。