scala - 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
解决方案
推荐阅读
- java - 如何列出外部 .java 文件中的所有方法
- react-native - 使用 React Native 0.59.1 运行应用程序时找不到模块“babel-plugin-graphql-tag”
- swift - swift如何在扩展中使用枚举
- mysql - 为什么这两个看似相似的 MySQL 查询返回完全不同的结果?
- firebase - page.goto 在某些网站的 Google Cloud Functions 上冻结
- html - 从 SVG 创建下拉列表的疑难解答:使用悬停显示菜单
- javascript - http.get 从异步 lambda 超时尝试访问公共 EC2
- google-sheets - 无法将数据从网页导入谷歌表格
- python - Python:数据框列上的精确文本过滤器显示额外结果而不是单个记录
- amazon-web-services - 在 ECS 上从 ECR 运行 Docker 映像