gpt4 book ai didi

scala - 序列化问题 "scala.math.BigDecimal does not have a no-arg default constructor"

转载 作者:行者123 更新时间:2023-12-02 00:33:44 24 4
gpt4 key购买 nike

我是 scala 编程和 java 的新手,所以这是我的问题:

我有一个要用 BigDecimal 属性序列化的对象

import java.util.Date
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter
import reflect.BeanProperty

class TestObject {
@XmlJavaTypeAdapter(classOf[BigDecimalAdapter])
var test: BigDecimal = 0.00
}

我收到此错误:

scala.math.BigDecimal does not have a no-arg default constructor

Xml 适配器:

import javax.xml.bind.annotation.adapters.XmlAdapter

class BigDecimalAdapter extends XmlAdapter[String, BigDecimal] {
def unmarshal(str: String) = BigDecimal(str)
def marshal(bD: BigDecimal) = bD.toString()
}

SOAP服务器:

import javax.jws.soap.SOAPBinding
import javax.jws.{WebParam, WebMethod, WebService}
import javax.xml.ws.Endpoint

@WebService(targetNamespace="test", name="testws", portName="test", serviceName="wsTest")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
class Server {
@WebMethod(action = "test")
def test(@WebParam(name = "testParam") testParam:TestObject): TestObject = {
return testParam
}

}

object SoapServer { // defined Companion Object for our class
def main(args: Array[String]) { // main method to make this a runnable application
val endpoint = Endpoint.publish("http://192.168.189.132:8080/wsTest", new Server())
System.out.println("Binded to port 8080. Waiting for requests...")
}
}

最佳答案

我认为您可能希望使用 java.math.BigDecimal,而不是 scala.math.BigDecimal。使用完全限定的路径名​​:

 import java.math.{BigDecimal => JDec}
var test: JDec = new JDec(0)

jaxb 框架似乎需要一个无参数的构造函数;我对它不太熟悉,无法理解为什么

关于scala - 序列化问题 "scala.math.BigDecimal does not have a no-arg default constructor",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5543103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com