1

次の問題についてヘルプを探しています。

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です。

ありがとう。

4

2 に答える 2

1

最初にパラメーターで一致させてみませんか?

param match {
  case b : B => ...
  case a : A => ...
}
于 2013-06-18T14:42:28.003 に答える