我想在groovy中动态地创建一个可序列化的接口实现,它可以通过网络发送,它可以被反序列化并用args执行。我使用map创建了匿名接口实现,但在序列化时失败。没有类定义的Groovy序列化
gcloader = new GroovyClassLoader()
script = "class X { public def x = [call: {y -> y+1}] as MyCallable }"
gclass = gcloader.parseClass(script)
x = gclass.newInstance().x
// serialzing x fails
我不知道,如果一个Groovy闭包被编译为一个随机的类名,这将使它不可能,即使它被序列化反序列化。有没有办法做到这一点?
什么是例外? – 2014-11-05 14:39:13
我使用的是https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/SerializationUtils.html,奇怪的是我得到java.io.NotSerializableException:X ie顶级类:( – FUD 2014-11-05 14:42:56
其实如果我做“X实现SER ..”然后我能够序列化它,但在反序列化我得到java.lang.ClassNotFoundException:X $ _closure1,这是有道理的。所以这可以通过一些其他的诡计? – FUD 2014-11-05 14:45:48