我面临在用Kotlin语言编写的Android应用程序中通过Socket传递自定义序列化类的问题。至于我设法解决问题的是GregorianCalendar类,它在我的TakeKeyUserEvent类中传递。当我没有在班上传递GregorianCalendar对象时,问题不再存在。
客户端:
Set()
服务器:
let uniqColors = _.uniqBy(colorCollection, function (e) { return e.r + ' ' + e.g + ' ' + e.b; });
TakeKeyUserEvent类:
val event = TakeKeyUserEvnet(u,r,date)
val s: Socket = Socket(IP,PORT)
val out: ObjectOutputStream = ObjectOutputStream(s.getOutputStream())
out.writeObject(event)
out.flush()
out.close()
UserEvent类:
thread(start = true) {
val ss: ServerSocket = ServerSocket(PORT)
while(true){
clientSocket = ss.accept()
val input = ObjectInputStream(clientSocket.getInputStream())
val event: UserEvent = input.readObject() as UserEvent //error happens here
readMessage(event)
}
}
错误:
class TakeKeyUserEvent(val user: User, val room: Room, val date: GregorianCalendar): UserEvent() { //Works perfectly without GregorianCalendar class
companion object {
@JvmStatic private val serialVersionUID: Long = 7571062817744602394L
}
}
我试图创建我自己的GregorianCalendar类,它继承自原始类并设置我的serialVersionUID但它没有帮助。我会感谢任何帮助。
答案 0 :(得分:0)
我设法通过以毫秒(作为Long值)传递时间然后将其更改为GregorianCalendar对象来解决此问题。它现在完美地运作。我知道这是一种解决方法,所以如果你有更好的解决方案,请与他人分享。