Я пытаюсь создать сериализуемую реализацию интерфейса динамически динамически, которая может быть отправлена по проводу, где ее можно десериализовать и выполнить с помощью args. Я создал анонимную реализацию интерфейса с использованием карты, но это не сработает при сериализации.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
Я не уверен, если заводной закрытие компилируется на имя случайного класса, которое сделало бы невозможным десериализации даже если он получает сериализации. Есть ли способ сделать это?
В чем исключение? –
Я использую https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/SerializationUtils.html и странно получаю java.io.NotSerializableException: X ie top level class :( – FUD
На самом деле, если я делаю «X реализует Ser ..», то я могу сериализовать его, но при десериализации я получаю java.lang.ClassNotFoundException: X $ _closure1, что имеет смысл. Так что это может быть сделано некоторыми другой обман? – FUD