【问题标题】:How to serialize self-defined objects in Groovy如何在 Groovy 中序列化自定义对象
【发布时间】:2011-08-25 20:50:10
【问题描述】:

这段代码...

class A implements Serializable{
  String str
  int n
}

try{
  def a= new A(str:'abc', n:7)
  def out= new ObjectOutputStream(new FileOutputStream('serializedObject.obj'))
  out.writeObject(a)
  out.close()
}finally{}

try{
  def inp= new ObjectInputStream(new FileInputStream('serializedObject.obj'))
  def a2= inp.readObject()
  inp.close()
}finally{}

...产生错误...

java.lang.ClassNotFoundException: A
    at java_io_ObjectInput$readObject.call(Unknown Source)
    at otherRun.run(otherRun.groovy:16)

...尝试在第二个尝试块中重新加载对象时。当类是预定义类(如 java.util.List)时,它可以正常工作。 将逐行转换为 Java 时,上述代码也可以正常工作

如何让它在 Groovy 中工作?

【问题讨论】:

    标签: groovy


    【解决方案1】:

    将您的“A 类”放入它自己的文件中,并确保“A.class”文件在您读取对象的位置可用(在类路径中)。

    【讨论】:

    • 我猜想不用尝试就行了,事实上这是我在 Groovy 中使用序列化的最终目标。然而,在 Groovy 中使用单个源文件来试验新的 Java/Groovy 特性是非常方便的,然后再用多个文件、包、性能增强等对其进行形式化。因为代码在转换行时可以正常工作-插入 Java,也许 Groovy 也应该启用它。
    • 如果您有一个单独的源文件并执行它,“A 类”可能会被编译多次……通常会得到一个奇怪的名称。这也可能导致奇怪的行为。
    猜你喜欢
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多