Use Java reflection to generate schemas and protocols for existing classes.

Java types are mapped to Avro schemas as follows:

The {@link org.apache.avro.reflect.Union Union} annotation can be used to support reflection of schemas for interfaces, abstract base classes and other uses of polymorphism.

The {@link org.apache.avro.reflect.Stringable Stringable} annotation will cause a type to be serialized via its {@link java.lang.Object#toString() toString} method.