[
https://issues.apache.org/jira/browse/GROOVY-11993?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul King resolved GROOVY-11993.
--------------------------------
Fix Version/s: 6.0.0-alpha-2
Assignee: Daniel Sun
Resolution: Fixed
> Support serializable method reference
> -------------------------------------
>
> Key: GROOVY-11993
> URL: https://issues.apache.org/jira/browse/GROOVY-11993
> Project: Groovy
> Issue Type: Improvement
> Reporter: Daniel Sun
> Assignee: Daniel Sun
> Priority: Major
> Fix For: 6.0.0-alpha-2
>
>
> Groovy has supported serializable lambda expression for years, and
> serializable method reference will be supported in this improvement, e.g.
> {code}
> import java.io.ByteArrayInputStream
> import java.io.ByteArrayOutputStream
> import java.io.Serializable
> @CompileStatic
> class C {
> interface SerSupplier<T> extends Serializable, Supplier<T> {}
> private final String text
> C(String text) {
> this.text = text
> }
> SerSupplier<String> create() {
> text::trim
> }
> static byte[] serialize(Serializable value) {
> def out = new ByteArrayOutputStream()
> out.withObjectOutputStream { it.writeObject(value) }
> out.toByteArray()
> }
> static <T> T deserialize(byte[] bytes) {
> new
> ByteArrayInputStream(bytes).withObjectInputStream(C.classLoader) {
> (T) it.readObject()
> }
> }
> }
> C.SerSupplier<String> supplier = C.deserialize(C.serialize(new
> C(' answer ').create()))
> assert supplier instanceof Serializable
> assert supplier.get() == 'answer'
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)