如何在Groovy中序列化自定义对象

如何在Groovy中序列化自定义对象,groovy,Groovy,此代码 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 Object

此代码

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)
…尝试在第二个try块中重新加载对象时。当类是预定义类(如java.util.List)时,它可以正常工作。当将line for line转换为Java时,上述代码也可以正常工作


如何让它在Groovy中工作?

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

我猜不用尝试它也可以工作,事实上,这是我在Groovy中使用序列化的最终目标。但是,在Groovy中使用一个源文件来试验新的Java/Groovy功能非常方便,然后再使用多个文件、包、性能增强等对其进行形式化。因为代码在逐行转换为Java时工作正常,Groovy可能也应该启用它。如果您有一个单源文件并执行它,“A类”可能会被编译多次。。。通常都有一个很粗的名字。这也会导致奇怪的行为。