* Inline extension functions for existing APIs. These are supremely useful. You can write features like locking and unlocking around a block, or try-with-resources in a one-liner, without compromising performance.
* (Nested) When statements, if-else as expression etc.
* Reified generics. You can actually write: "if (xy is T)" or use T::class
* Nullsafe typing
* Data classes
* Getter/Setter syntax as property and indexing syntax.
* Nullsafe typing.
* Nullsafe typing!
* Inline extension functions for existing APIs. These are supremely useful. You can write features like locking and unlocking around a block, or try-with-resources in a one-liner, without compromising performance.
* (Nested) When statements, if-else as expression etc.
* Reified generics. You can actually write: "if (xy is T)" or use T::class
* Nullsafe typing
* Data classes
* Getter/Setter syntax as property and indexing syntax.
* Only unchecked exceptions
Kotlin really is Java 2.0.