1

ここに私が今持っているコードのビットがあります.Processorと呼ばれるAkka Actorのサブクラスを参照しています:

def newProcessorProps(processorClass: Class[_ <: Processor]): Props = {
  Props(new processorClass).withDispatcher("dispatcher")
}

そのパラメーターを使用して新しいクラスをインスタンス化する方法がわかりません。すでにクラスがあるので、ここではリフレクションは必要ないと思います。ご協力いただきありがとうございます。

4

2 に答える 2

3

クラスオブジェクトを値として持っている場合は、newInstance()メソッドを呼び出すことでインスタンス化できます。したがって、次のようにします。

def newProcessorProps(processorClass: Class[_ <: Processor]): Props = {
  Props(processorClass.newInstance()).withDispatcher("dispatcher")
}

タイプのマニフェストを使用して、そのタイプのオブジェクトをインスタンス化することもできます

def newProcessorProps[T <: Processor](implicit m: Manifest[T]): Props = {
  Props(m.erasure.newInstance().asInstanceOf[T]).withDispatcher("dispatcher")
}

そして、次のように特定のプロセッサに対して呼び出します。

newProcessorProps[SpecificProcessor]

これは、T にパラメーターのないコンストラクターがある場合にのみ機能します。

于 2012-10-30T23:37:07.860 に答える
0

技術的には、ドキュメントに従って Props(processorClass) または Props[ProcessorClassType] です

于 2012-10-31T00:46:46.167 に答える