use*_*659 1 java reflection scala
我正在尝试使用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>
}
Run Code Online (Sandbox Code Playgroud)
错误:
error: type mismatch;
found : scala.reflect.Field => Unit
required: java.lang.reflect.Field => ?
for(field: scala.reflect.Field <- getClass().getDeclaredFields()) {
Run Code Online (Sandbox Code Playgroud)
所以,即使我明确使用scala.reflect.Field,它仍然被视为java.lang.reflect.Field?
getClass().getDeclaredFields()返回java.lang.reflect.Field对象.除非您找到在这两个类之间进行转换的方法,否则您不能将它们声明为scala.reflect.Field并期望它们起作用.
编辑:修复您的代码:
for(field: java.lang.reflect.Field <- getClass().getDeclaredFields()) {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |