私は Scala リフレクション機能を初めて使用します。型パラメーターに従ってさまざまなクラスのインスタンス化を提供するファクトリ オブジェクトを構築できるかどうか疑問に思っていました。
以下のコードは機能しませんが、私が達成しようとしていることを最小限の例で説明しています。ここでは重要ではないため、A1Factory と A2Factory のコードは省略しました。
sealed abstract class A
class A1 extends A
class A2 extends A
object Factory {
def apply[T <: A]() = {
classOf[T] match {
case x: A1 => new A1Factory()
case x: A2 => new A2Factory()
}
}
}
私ができるようにしたいのは、次のようなものです。
type currentType = A1
val factory = Factory[currentType]()
factory のタイプはA1Factoryです。
これはできますか?