0

私はこのようなことをしようとしています:

trait BaseMongoDAO[T <: IdentifiableModel with CaseClass] {


  implicit val manifest: Manifest[T]

  ........ some implicit manifest usage here
}


trait MongoUserRepository extends BaseMongoDAO[User] with UserRepository {

  override val manifest = Manifest.classType(User.getClass)

  ........ implementing UserRepository here

}

しかし、うまくいかないようで、私のマニフェストは互換性のないタイプであると表示されます。

私は何か悪いことをした?

4

1 に答える 1

2

の定義を見るとclassType:

def classType[T](clazz: Predef.Class[_]): Manifest[T] =
    new ClassTypeManifest[T](None, clazz, Nil)

は引数から推測されないことがわかりTます。したがって、戻り値の型から、または型パラメーターを明示的に指定することによってのみ推測できます。次の手順で問題を解決する必要があります。

override val manifest = Manifest.classType[User](User.getClass)

または:

override val manifest: Manifest[User] = Manifest.classType(User.getClass)
于 2013-01-14T23:36:26.903 に答える