【发布时间】:2017-05-07 16:11:09
【问题描述】:
目前,我在识别使用 UDP 通过网络发送的接收序列化对象时遇到问题。
我有一个名为 MsgType 的抽象类:
sealed abstract class MsgType
case class Msg(message : String) extends MsgType
case class End() extends MsgType
其中,Msg 表示正常消息,而 End 表示客户端的终止请求。
================================================ ==============================
在服务器端,我有一个函数调用 isMessage 来检测是正常消息还是终止请求:
def isMessage(message: AnyRef): Boolean = {
message match{
case End => false
case Msg(message) => true
}
}
================================================ ============================== 下面是使用 Kryo 接收客户端发送的消息的代码:
val inputString = kyro.readObject(input, classOf[MsgType])
println("incoming Message: " + isMessage(inputString))
但是,当我运行代码时,出现了一个异常,名为:
Exception in thread "main" com.esotericsoftware.kryo.KryoException: Error
constructing instance of class: MsgType
我知道这是因为 MsgType 是一个抽象类......
谁能建议我更好的解决方案来处理识别接收到的序列化对象类型的问题?
感谢和最好的问候, 长。
【问题讨论】:
标签: scala serialization udp pattern-matching kryo