我想在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