-
Kotlin 是什么?
JetBrains 在 JVM 上推出的新语言。 -
有 Java 为什么还要学 Kotlin?
首先,Kotlin 和 Java 是可以互相调用,意味着不需要放弃以前学的东西。
其次,Kotlin 最大的优点是「简单」,语法简洁使开发更具效率,并且它的一些特性可以说弥补了 Java 的缺陷。
最后,要跟紧时代的脚步啊。 -
Kotlin 什么时候变成了 Android 的官方语言??
Google I/O 2017: highlights from the developer
Google is adding Kotlin as an official programming language for Android development
(以上两个链接需要科学上网)
值得一提是第二个链接有个现场的视频,看起来氛围棒棒的。
Kotlin 的一些特性
- 数据类 (Data classes)
比如说我们需要一个实体类 Artist ,其中包括 id、name、url 等属性。
用 Kotlin 可以这样写:
data class Artist(
var id: Long,
var name: String,
var url: String)
这时候编译器已经自动生成了 getter 和 setter 方法,不需要手动编写。
- 函数扩展 (Extension functions)
可以给任何类添加函数:
fun Fragment.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT) {
Toast.makeText(getActivity(), message, duration).show()
}
然后就可以这样调用:
fragment.toast("Hello world!")
这个特性可以减少工具类的编写。
- 空安全(Null safety)
Kotlin 默认每个对象都不能为 null,如果要赋为 null 要使用安全调用操作符(写做?
)手动声明:
var a: String = "a"
a = null //编译错误
var b: String? = "b"
b = null //编译成功
并且在允许为空的情况下,不对对象进行判空操作将不能被引用:
var person: Person? = null
person.name = "person" //编译失败
person?.name = "person" //编译成功
-
支持 Lambda
Java8 支持 Lambda,但是在 Andorid 开发用 Lambda 需要 jack 来编译。而 jack 还不是很完整,而且很多插件也不支持 jack。所以只能退而求其次使用 retroLambda。
相比 Kotlin 的直接支持还是有点区别。 -
字符串模板(String templates)
val apples = 4
val bananas = 3
println("I have $apples apples and ${apples+bananas} fruits.")
//输出: I have 4 apples and 7 fruits.
这些特性有很多,这里也不多展示。
Kotlin 前景
其实现在 Kotlin 也不是非常的完美,看过不少人的评价也提到过还存在一些 BUG,比如 Kotlin 调用 Java 的东西是完全没有问题的,而 Java 调用 Kotlin 写的东西有时候就出错了。
但即使如此,现在也已经有不少的团队已经用上了 Kotlin,实际上 Kotlin 被用于 Android 的开发也不是一两天的事情了,这一次转正也是修成正果...
还有就是很多人在担心 Java 是不是不行了,没有基础的人是不是直接学 Kotlin 而不学 Java 了。
有一点, Kotlin 不是用来干掉 Java 的,至少短时间内这是不可能发生的事情。
Kotlin 的简洁和 Java 没有的特性是提高开发效率的武器,但也就是说如果现在的能力还不能胜任自己的工作,还谈不上提高效率的时候,老老实实学好 Java 吧。
毕竟现在这种环境下想必大家仍会用 Java 做更多的工作,但学更多的东西、跟紧时代的脚步是必不可少的,朋友们。
Kotlin 资料
关于如何在我们的项目中真正的用上 Kotlin,以及更多的语法知识。
可以选择参考:
《Kotlin for android developers》中文版翻译
[已完结]Kotlin 从入门到放弃 视频
Kotlin 官网
接下来几天打算就先熟悉一下 Kotlin,然后就试着改动到自己的项目中,陆续也会继续写自己遇到的问题或者经验等。
很期待新的语言带来的改变。
网友评论