編輯:Android資訊
Kotlin是JetBrains創造的基於JVM的語言,JetBrains是IntelliJ的締造團隊。
Kotlin是一個擁有很多函數編程特點的面向對象的編程語言。
我首先聲明我並沒有使用Kotlin很長時間,我幾乎是在學習的同時寫了這些文章的。我並沒有嘗試任何其它的替 代語言,例如Go和Scala,所以如果你是真的考慮換一種開發語言的話,我建議你去搜索一下其他人對這些 語言的評價。
以下是我選擇學習Kotlin的原因:
在開始任何爭論之前我建議你看一下Jake Wharton寫的一個有趣的文檔the use of Kotlin for Android development。
使用Kotlin,可以更容易的避免創建模版型代碼,因為大多數經典的情景都默認包含在Kotlin中。
例如,在java中,我們想要創建一個典型的data class時需要這樣做:
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)
當我們用java開發時,我們的大多數代碼是要進行類型檢查的,如果我們不想出現**unexpected
NullPointerException**的話,我們就要在運行代碼之前持續的檢查是否有對象為null。Kotlin,和其它語
言一樣,是空指針安全的,因為我們可以通過安全的調用操作來准確的聲明一個object可以為null。
我們可以這樣做:
//This won´t compile. Artist can´t be null
var notNullArtist: Artist = null
//Artist can be null
var artist: Artist? = null
// Won´t compile, artist could be null and we need to deal with that
artist.print()
// Will print only if artist != null
artist?.print()
// Smart cast. We don´t need to use safe call operator if we previously checked nullity
if (artist != null) {
artist.print()
}
// Only use it when we are sure it´s not null. Will throw an exception otherwise.
artist!!.print()
// Use Elvis operator to give an alternative in case the object is null
val name = artist?.name ?: "empty"
我們可以給任何類添加新方法。這比我們在project中使用的工具類可讀性更高。例如:我們可以給Fragment添加一個新方法來顯示Toast。
fun Fragment.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT) {
Toast.makeText(getActivity(), message, duration).show()
}
我們可以這樣使用:
fragment.toast("Hello world!")
如果我們可以不用在我們需要的時候每一次都創建一個listener,就像創建一個click listener那樣的操作,
而是僅僅定義我們想要做什麼?這種想法的確可以實現,它的實現得益於**lambda**d的使用:
view.setOnClickListener({ toast("Hello world!") })
Kotlin 依舊在發展,雖然它相對穩定,並且final release版本就很快發布,但是Kotlin在進行android相關開發的時候還是有些限制的。
對於android apps 開發,Kotlin是一個非常有趣的java替代者。下一篇文章將會描述如何用Kotlin新建一
個project,和如何更好的適用Kotlin來使得android開發更加簡單。敬請關注!
Android依賴注入之BufferKnife 8.0注解使用
前言: App項目開發大部分時候還是以UI頁面為主,這時我們需要調用大量的findViewById以及setOnClickListener等代碼,控件的少的時候我
C/C++在Java、Android和Objective-C三大平台下實現混合編程
Android和iOS開發都支持C++開發,可以一套代碼多平台使用。同時C++難以反編譯的特性也可以為Android開發帶來代碼的保密,另一native特性也可以
Android 應用開發性能優化完全分析
1 背景 其實有點不想寫這篇文章的,但是又想寫,有些矛盾。不想寫的原因是隨便上網一搜一堆關於性能的建議,感覺大家你一總結、我一總結的都說到了很多優化注意事項,但是
Android HandlerThread使用總結
簡介 首先我們看到HandlerThread很快就會聯想到Handler。Android中Handler的使用,一般都在UI主線程中執行,因此在Handler接收