Scala でジェネリック クラスを定義するとき、型パラメーター 'A' がケース クラスでなければならないことを確認するにはどうすればよいですか?
class TypedCollection[A](name: String){}
環境:
ケースクラスのコレクションであるかのように、reactivemongo JSONCollection と対話する汎用の 'TypedCollection' ラッパー クラスを定義しようとしています (リレーショナル データベースの Typesafe Slick に似ています)。
「A」がケース クラスでなければならない理由は、自動的に「unapply」メソッドが与えられるためです。このメソッドは、「A」型から JsObject または BSONObject への暗黙的な変換を作成するときにジェネリック クラスで使用されるため、MongoDB に格納できます。すなわち
implicit val AWrites = Json.writes[A]
implicit val AReads = Json.reads[A]