3
我是新來的Scala編程和Java所以這裏是我的問題:問題序列化「scala.math.BigDecimal沒有一個無參數的默認構造函數」
我有一個對象與一個被序列化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
XmlAdapter:
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()
}
SoapServer的:
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和scala之間的版本有什麼區別? – user690461 2011-04-05 00:12:18
那麼,斯卡拉一個是經典的「皮條客我的圖書館」模式,在那裏你可以使用標準的數學符號('+ * - /')作爲操作符。還有一個'Numeric [BigDecimal]',所以你可以做'myObjs.map(_。test).sum'等東西。你也可以與其他數字互操作;例如'myObj.test == 0'明智 – 2011-04-05 14:34:05
感謝您的所有信息 – user690461 2011-04-05 19:58:36