前沿
《Kotlin for android developers》中文翻译
摘抄自:https://github.com/wangjiegulu/kotlin-for-android-developers-zh/blob/master/SUMMARY.md
Kotlin的优点
- 它更加易表现:这是它最重要的优点之一。你可以编写少得多的代码。
- 它更加安全:Kotlin是空安全的,也就是说在我们编译时期就处理了各种null的情况,避免了执行时异常。如果一个对象可以是null,则我们需要明确地指定它,然后在使用它之前检查它是否是null。你可以节约很多调试空指针异常的时间,解决掉null引发的bug。
- 它是函数式的:Kotlin是基于面向对象的语言。但是就如其他很多现代的语言那样,它使用了很多函数式编程的概念,比如,使用lambda表达式来更方便地解决问题。其中一个很棒的特性就是Collections的处理方式。
- 它可以扩展函数:这意味着我们可以扩展类的更多的特性,甚至我们没有权限去访问这个类中的代码。
- 它是高度互操作性的:你可以继续使用所有的你用Java写的代码和库,因为两个语言之间的互操作性是完美的。甚至可以在一个项目中使用Kotlin和Java两种语言混合编程。
空安全
java代码中我们必须通过非空判断来避免NullPointerException,但是Kotlin是空安全的,我们需要借助安全操作符(?)来明确的指出一个对象是否能为空。
// 这里不能通过编译. Artist 不能是null
var notNullArtist: Artist = null
// Artist 可以是 null
var artist: Artist? = null
// 无法编译, artist可能是null,我们需要进行处理
artist.print()
// 只要在artist != null时才会打印
artist?.print()
// 智能转换. 如果我们在之前进行了空检查,则不需要使用安全调用操作符调用
if (artist != null) {
artist.print()
}
// 只有在确保artist不是null的情况下才能这么调用,否则它会抛出异常
artist!!.print()
// 使用Elvis操作符来给定一个在是null的情况下的替代值
val name = artist?.name ?: "empty"
注释:Kotlin中var声明一个变量,和js中类似;val是一个常量,但是有别于java中的final关键字
比如:var i : Int = 3 (int类型的变量等于3) val name:String = "zhangsan"(字符创常量name赋值zhangsan)
环境配置(Android Studio)
- 安装Kotlin插件,安装后重启AS
- 和平时你创建Android项目一样创建一个Android Project
- 配置Gradle
- 在Project的build.gradle中加入
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.2-4"
- 在Module的build.gradle中加入依赖
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2-4"
compile "org.jetbrains.anko:anko-common:0.8.2"