scala反射错误java

发布于 2024-12-14 12:10:58 字数 682 浏览 4 评论 0原文

我正在尝试使用 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?

I'm trying to use scala.reflect to get the class attributes and to write them XML.
However I'm getting a strange error

 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>
}

The error:

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

So even if I explicitly use scala.reflect.Field, it still is viewed as java.lang.reflect.Field?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

撕心裂肺的伤痛 2024-12-21 12:10:58

getClass().getDeclaredFields() 返回 java.lang.reflect.Field 对象。除非您找到在这两个类之间进行转换的方法,否则您无法将它们声明为 scala.reflect.Field 并期望它们能够工作。

编辑:修复您的代码:

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

getClass().getDeclaredFields() returns java.lang.reflect.Field objects. Unless you find a way to convert between these two classes, you cannot declare them as scala.reflect.Field and expect them to work.

EDIT: fix for your code:

for(field: java.lang.reflect.Field <- getClass().getDeclaredFields()) {
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文