Kotlin Properties
A minor Kotlin annoyance. If you have a Java class with a public final
field, such that you just reference it as foo.bar
, then it'd be nice for a Kotlin equivalent to be accessible in the same way.
Problem is, Kotlin/Java interop converts that to Java Bean style, so a Kotlin foo.bar
has to be accessed as foo.getBar()
from Java code. I was tearing my hear out wondering why the compiler thought the field I was accessing had 'private access' when it so obviously didn't.
Upshot: cue some editing when converting Java classes to Kotlin.
Probably not a huge issue for most 'idiomatic' Java, but I've long been a fan of exposing immutable fields for struct-ish types this way (subject to usual public API caveats etc; it's trivially easy for internal-only code to be refactored into method accessors if you ever need it, and in the meantime, you have cleaner code, cf. any language which supports properties).
{2017.09.14 18:35}