1. 什么是Kotlin?
Kotlin,它是JetBrains开发的基于JVM的语言。JetBrains因为创造了 一个强大的Java开发IDE被大家所熟知。Android Studio,官方的Android IDE,就 是基于Intellij,作为一个该平台的插件。
2.优点
- 它更加易表现
*通过Kotlin,可以更容易地避免模版代码因为大部分的典型情况都在语言中默认覆 盖实现了。举个例子,在Java中,如果我们要典型的数据类,我们需要去编写(至 少生成)这些代码:
public class Artist {
private long id;
private String name;
private String url;
private String mbid;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getMbid() {
return mbid;
}
public void setMbid(String mbid) {
this.mbid = mbid;
}
@Override
public String toString() {
return "Artist{" + "id=" + id + ", name='" + name + '\'' + ", url='" + url + '\'' + ", mbid='" + mbid + '\'' + '}';
}
}
使用Kotlin,我们只需要通过数据类:
data class Artist(
var id: Long,
var name: String,
var url: String,
var mbid: String)
这个数据类,会自动生成所有属性和他们的访问器,以及一些有用的方法,比如,toString()。
- 它更加安全
当我们使用Java开发的时候,我们的代码大多是防御性的。如果我们不想遇 到 NullPointerException ,我们就需要在使用它之前不停地去判断它是否为 null。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"
- 它是函数式的(支持Lambdas)
*每次我们去声明一个点击所触发的事件,可以只需要定义我们需要做些什么,而不 是不得不去实现一个内部类?我们确实可以这么做,这个(或者其它更多我们感兴 趣的事件)我们需要感谢lambda:
view.setOnClickListener { toast("Hello world!") }
- 它可以扩展函数
*我们可以给任何类添加函数。它比那些我们项目中典型的工具类更加具有可读性。 举个例子,我们可以给fragment增加一个显示toast的函数:
fun Fragment.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT) {
Toast.makeText(getActivity(), message, duration).show()
}
我们现在就可以这样使用
fragment.toast("Hello world!")
- 它是高度互操作性的