This is a follow-up of the brainstorming issue about better null safety in Java.
The patch adds:
1) A new abstract Option<T> class, with two subclasses: Some<T> and None<T>.
2) An optional compiler flag for the java compiler. When set, it wraps methods for optional fields in Option types.
An example of usage is found here: https://github.com/eirslett/thrift-optional-example
- No java dependencies are introduced.
- The patch is entirely backwards-compatible; if the compiler flag is not present, it will generate the same code as thrift usually does.
- The implementation is compatible with thrift servers/clients where the compiler flag is not used.