View Problem

Implement and use an Interface

Create a Serializable interface consisting of 'save' and 'restore' methods, each of which:

* Accept a stream or handle or descriptor argument for the source or destination
* Save to destination or restore from source the properties or data members of the implementing class (restrict yourself to the primitive types 'int' and 'string')

Next, create a Person class which has 'name' and 'age' properties or data members and implements this interface. Instantiate a Person object, save it to a serial stream, and instantiate a new Person object by restoring it from the serial stream.
class Person
Str name
Int age
new make(|This| f) { f(this) }

person := Person() { name="Tom Bones"; age=23 }
Person tom := File(`tommy.dump`).in.readObj

Submit a new solution for fantom
There are 13 other solutions in additional languages (clojure, cpp, fsharp, groovy ...)