If I'm understanding this correctly, is the author saying that a future version of Java may let me use `String! foo` and the compiler will make sure this variable cannot be null?
Explicit nullability is one of my favorite features of kotlin. Kotlin basically treats nulls like a checked exception: deal with a null value immediately or incur the mental overhead of having your data treated like a 2nd-class citizen in all the code it touches.
Having briefly dabbled in Kotkin before returning to C#, this is one thing I really miss. C# has added non-null reference types but there's a number of places I really wish it acted differently.
If Go were a modern language, it would've had algebraic data types and pattern matching since the beginning, and its handling of errors and enumerations wouldn't be quite so embarrassingly bad.
That would be very helpful indeed.