首页 > 解决方案 > java.lang.ClassCastException 尝试以 List 作为参数反序列化对象

问题描述

我正在尝试序列化然后反序列化包含 List[user defined class] 作为参数的对象。它不断抛出 java.lang.ClassCastException。但是,当 List 是 Int 或 String 时,代码可以工作。我认为解决课程存在一些问题,但我无法解决。

object WriteTestObject {
    class A
    case class B (n:String) extends A
    class C
    case class D (args:List[B]) extends C
    def main(args: Array[String]) ={
        val x = B("some String")
        val y = D(List(x))
        val oos = new ObjectOutputStream(new FileOutputStream("out.txt"))
        oos.writeObject(y)
        oos.close()
        val ois = new ObjectInputStream(new FileInputStream("out.txt"))
        val ob = ois.readObject.asInstanceOf[B]
        print(ob)
        ois.close()

    }
 }

输出:

java.lang.ClassCastException:无法将 scala.collection.immutable.List$SerializationProxy 的实例分配给 WriteTestObject$D 实例中类型为 scala.collection.immutable.List 的字段 WriteTestObject$D.args

标签: scaladeserializationclasscastexception

解决方案


推荐阅读