2

GlobalSettings での getControllerInstance の意図された使用パターンは何ですか? 依存性注入フレームワークなしで使用できますか?

署名はgetControllerInstance[A](controllerClass: Class[A]): A

したがって、私が理解していることから、これは@プレフィックスで指定された任意のルートで呼び出され、そのタイプのコントローラーのインスタンスを返す必要があります ( A)。しかしA、パラメーター化された型がClass実行時に型消去の対象である場合、正しいですか? どのコントローラ クラスが要求されているかを知るにはどうすればよいですか?

4

1 に答える 1

1

私は非常に非Scalaに見える方法を見つけましたが、私にとってはうまくいきます。

override def getControllerInstance[A](controllerClass: Class[A]): A = {
  if (controllerClass == classOf[CardsService]) ComponentsRegistry.cardsService.asInstanceOf[A]
  else super.getControllerInstance(controllerClass)
}

私はそれが醜いものであり、より良い解決策を見て喜んでいることに絶対に同意します。

残念ながら、ここでパターンマッチングを使用して、このコードをもう少し慣用的にすることはできません。Scalaの「match」ステートメントでクラスを一致させるにはどうすればよいですか?

于 2013-02-10T00:53:58.717 に答える