ошибка отражения скалы - PullRequest
1 голос
/ 07 ноября 2011

Я пытаюсь использовать scala.reflect, чтобы получить атрибуты класса и записать их в формате XML. Однако я получаю странную ошибку

 def toXml(): xml.Elem = {
<node>{
  for(field: scala.reflect.Field <- getClass().getDeclaredFields()) {
    val tmpString = "<" + field.name + ">" + this.getClass().getMethods.find(_.getName == field.name).get.invoke(this) + "</" + field.name + ">"
    print(tmpString)
  }
 }</node>
}

Ошибка:

error: type mismatch;
found   : scala.reflect.Field => Unit
required: java.lang.reflect.Field => ?
for(field: scala.reflect.Field <- getClass().getDeclaredFields()) {

Так что даже если я явно использую scala.reflect.Field, он все равно рассматривается как java.lang.reflect.Field?

1 Ответ

7 голосов
/ 07 ноября 2011

getClass().getDeclaredFields() возвращает java.lang.reflect.Field объектов.Если вы не найдете способ преобразования между этими двумя классами, вы не можете объявить их как scala.reflect.Field и ожидать, что они будут работать.

РЕДАКТИРОВАТЬ: исправить для вашего кода:

for(field: java.lang.reflect.Field <- getClass().getDeclaredFields()) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...