2015-08-17 5 views
0

У меня есть родительский класс:Scala отражение. Как получить значение родительского поля от родителя?

 abstract case class Model[T] (id: Option[String]) { 
     protected val FIELDS : List[String] 

и количество детей от него. Я пытаюсь получить значение детских классов с помощью отражения, как это:

 val m = ru.runtimeMirror(this.getClass.getClassLoader) 
     for (field <- this.FIELDS) { 
      val term = ru.typeOf[Model[T]].decl(ru.TermName(field)).asTerm 
      val im = m.reflect(this) 
      val fieldMirror = im.reflectField(term) 
      Logger.debug(fieldMirror.get.toString) 
     } 

У меня есть ошибка компилятора

Нет TypeTag для models.Model [T]

Если insted Model [T] i поместил имя фактического дочернего класса, все будет работать. Но мне нужно, чтобы этот код был общим. Как я могу это сделать?

ответ

2

Сам класс должен удерживать TypeTag:

abstract case class Model[T: ru.TypeTag] (id: Option[String]) 
+0

Похоже, правильный ответ, но теперь у меня есть исключение: не является термином во время выполнения. – user2975535

Смежные вопросы