简洁
大大减少样板代码的数量
/* 使用一行代码创建一个包含

getters、 setters、 equals()hashCode()toString() 以及 copy() 的 POJO:

*/

data class Customer(val name: String, val email: String, val company: String)

// 或者使用 lambda 表达式来过滤列表:

val positiveNumbers = list.filter { it > 0 }

// 想要单例?创建一个 object 就可以了:

object ThisIsASingleton { val companyName: String = “JetBrains”}

安全
避免空指针异常等整个类的错误
/*

彻底告别那些烦人的 NullPointerException——著名的十亿美金的错误

*/

var output: String

output = null // 编译错误

// Kotlin 可以保护你避免对可空类型进行误操作

val name: String? = null // 可空类型

println(name.length()) // 编译错误

// 并且如果类型检测正确,编译器会为你做自动类型转换

fun calculateTotal(obj: Any) {

if (obj is Invoice)

    obj.calculateTotal()

}

互操作性
充分利用 JVM、Android 和浏览器的现有库
/*

使用 JVM 上的任何现有库,因为有 100% 的兼容性,包括 SAM 支持。

*/

import io.reactivex.Flowable

import io.reactivex.schedulers.Schedulers

Flowable .fromCallable {

Thread.sleep(1000) // 模仿高开销的计算 "Done"

}

.subscribeOn(Schedulers.io())

.observeOn(Schedulers.single())

.subscribe(::println, Throwable::printStackTrace)

// 无论是面向 JVM 还是 JavaScript 平台,都可用 Kotlin 写代码然后部署到你想要的地方

import kotlin.browser.window

fun onLoad() {

window.document.body!!.innerHTML += "<br/>Hello, Kotlin!"

}

工具友好
可用任何 Java IDE 或者使用命令行构建

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐