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!")
- 它是高度互操作性的