2014-01-31 2 views
1

Я все еще склоняюсь к Scala, поэтому пытаюсь выяснить, чего не хватает в коде ниже. Я получаю это сообщение об ошибке, когда пытаюсь создать экземпляр genericserializer с анонимным типомОшибка манифеста для анонимного типа

Описание Путь к ресурсу Местонахождение Тип Тип несоответствие; найдено: scala.reflect.Manifest [Object] требуется: scala.reflect.Manifest [FolderMgmtDAO.this.anoMoveType] Примечание: Object>: FolderMgmtDAO.this.anoMoveType, но черта Manifest инвариантна в типа T. Вы, возможно, хотите исследовать тип подстановочных знаков, такой как _ >: FolderMgmtDAO.this.anoMoveType. (SLS 3.2.10) FolderMgmtDAO.scala/somucore/SRC/СОМУ/сердцевина линия 20 Scala Проблема

Ниже приведен код

object GenericSerializer 
{ 
    def apply[T <:AnyRef:Manifest]() = new GenericSerializer[T]() 
} 

class GenericSerializer[T <:AnyRef:Manifest] extends IMongoSerializer[T] {} 

//Anonymous type creation and using GenericSerializer 
    type anoMoveType = { def folderPath:String } 
     val szr = GenericSerializer[anoMoveType] 

ответ

0

Looks like это не представляется возможным с манифестов. Вместо этого вы должны использовать TypeTag. Пример:

import scala.reflect.runtime.universe._ 
object GenericSerializer 
{ 
    def apply[T <:AnyRef]()(implicit tag: TypeTag[T]) = {} 
} 
Смежные вопросы