我需要帮助使用JAXB来(反)序列化JTS库的多边形:
实现
时class PolygonAdapter extends XmlAdapter[String,Polygon] {...}
并注释多边形字段,如:
@XmlRootElement(name = "Room")
case class Room(@XmlAttribute name: String, description: String,
@XmlJavaTypeAdapter(classOf[PolygonAdapter]) polygon: Polygon) {...}
我得到部分classOf[PolygonAdapter])
标记报告以下错误:
Multiple markers at this line
- type mismatch; found : java.lang.Class[room.PolygonAdapter](classOf[room.PolygonAdapter]) required: java.lang.Class[_ <:
javax.xml.bind.annotation.adapters.XmlAdapter]
- annotation argument needs to be a constant; found: classOf[PolygonAdapter]
- annotation argument needs to be a constant; found: classOf{<null>}[PolygonAdapter]{<null>}
- type mismatch; found : java.lang.Class[room.PolygonAdapter](classOf[room.PolygonAdapter]) required: java.lang.Class[_ <:
javax.xml.bind.annotation.adapters.XmlAdapter]
- annotation argument needs to be a constant; found: classOf{<null>}[PolygonAdapter]{<null>}
我的问题:
- 如何解决这个问题?
- 有更好的方法(反)序列化复杂的对象层次结构在scala比使用JAXB?
谢谢。
我不确定如何解决你的第一个问题。注释case类可能有问题吗?可以尝试使用非case类。但还是很不确定。可能和这个SO问题有关?
scala:注释访问方法
但是,你看过Scala内置的XML特性吗?
http://www.ibm.com/developerworks/library/x-scalaxml/http://www.scala-lang.org/node/131 http://www.codecommit.com/blog/scala/working-with-scalas-xml-support编辑:可能值得一看:http://scalaxb.org/如果你想避免使用Scala的内置功能…