2011-11-07 2 views
1

클래스 속성을 가져오고 XML을 작성하기 위해 scala.reflect를 사용하려고합니다. 그러나 나는scala reflection error java

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의로 볼

?

답변

7

getClass().getDeclaredFields()java.lang.reflect.Field 개체를 반환합니다. 이 두 클래스간에 변환하는 방법을 찾지 못하면 scala.reflect.Field으로 선언하고 작동하도록 기대할 수 없습니다.

편집 : 코드에 대한 수정 :

for(field: java.lang.reflect.Field <- getClass().getDeclaredFields()) { 
+0

스칼라 클래스 필드의 목록을 얻을 수있는 방법이있다? – user485659

+0

@ user485659를 참조하십시오. 많은 경우에 유추하기 때문에 형식을 선언 할 필요조차 없습니다. – Geo

+0

고마워요,하지만 지금 여기에 또 다른 문제가 있습니다. 사용자 지정 클래스를 참조하는 특성의 형식을 얻으려고합니다. Object 형식입니다. 내 코드 : { 필드 : java.lang.reflect.Field <- getClass(). getDeclaredFields()) yield {this.getClass getMethods.find (_. getName == field.getName()). get.invoke (this)} } user485659

관련 문제