Skip to content

Lambdas are not serialisable #4442

Closed
Closed
@allanrenucci

Description

@allanrenucci
object Test {
  def serializeDeserialize[T <: AnyRef](obj: T): T = {
    import java.io._
    val buffer = new ByteArrayOutputStream
    val out = new ObjectOutputStream(buffer)
    out.writeObject(obj)
    val in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray))
    in.readObject.asInstanceOf[T]
  }

  def main(args: Array[String]): Unit = {
    val adder = serializeDeserialize((x: Int) => x + 1)
    assert(adder(1) == 2)
  }
}
> dotc -d out Test.scala
> dotr -classpath out Test
Exception in thread "main" java.io.NotSerializableException: Test$$$Lambda$1/1023892928
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
	at Test$.serializeDeserialize(Test.scala:6)
	at Test$.main(Test.scala:12)
	at Test.main(Test.scala

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions