(7) ◦ No streams ◦ No try-with-resources ◦ No lambdas, methods refs -> Use RxJava -> Use Retrolambda -> minSdkVersion = 19 or Retrolambda • Java language problems ◦ “Util Hell” ◦ Nullability problems ◦ Mutability problems ◦ General verbosity of common idioms
Smart cast Null safety Default values for function parameters Lazy property Extension Functions Equals Single-expression functions When expression let, apply, use, with Collections Kotlin Android Extensions Plugin Anko
val px = this * (metrics.densityDpi / 160f) return Math.round(px) } fun Int.pxToDp(): Int { val metrics = Resources.getSystem().displayMetrics val dp = this / (metrics.densityDpi / 160f) return Math.round(dp) }
database = openDatabase() val result = database.count("users") database.close() return result } fun countUsers() = openDatabase().use { it.count("users") } need to close
database = openDatabase() val result = database.count("users") database.close() return result } fun countUsers() = openDatabase().use { it.count("users") } automatically close database