Kotlin 被作為 Google 官方語言也有一年多了,但除了剛宣布那個月極度火爆以外,后面生活又回歸了平靜。不少小伙伴緊跟 Google 爸爸的步伐,也對 Kotlin 有了或多或少的了解,GitHub 上也有了相當一部分的 Kotlin 開源項目。
但或許是后知后覺,依然還是有相當一部分小伙伴,和南塵一樣,只是在 Kotlin 很火的那段時間,簡單了解了一下,就像當初的微信小程序一樣。然后生活還是回歸平靜,依然對它停留在知道的程度。
先推薦一下最近在 GitHub 上更新的項目
但經過一周多的詳細學習,我已經把自己 GitHub 上的開源項目 AiYaGirl 進行了深度改寫,完全使用 Kotlin 語言新開辟了一個分支。
AiYaGirl 地址:https://github.com/nanchen2251/AiYaGirl
可能有不少小伙伴還不知道 AiYaGirl ,這是南塵去年在 GitHub 上開源的一款 APP,功能比較簡單,主要采用 Retrofit && RxJava && MVP 模式,數據來源於代碼家的 Gank.io,目前在 GitHub 上有着將近 1k 的 Stars。
GitHub 上一直都有挺多各具特色的完整架構 APP,它們各有各的優勢,我非常地感動,你看到了這兒,這就是我的幸運。
現在我新增了一個 kotlin 分支,已經完全采用 Kotlin 改寫完畢,希望你能喜歡。
如果你對 RxJava 不是很熟悉,我強烈推薦你能看看我的 RxJava2Examples 開源庫,我們用代碼 && Blog 對 RxJava2 的方式向你展示 RxJava 2 的各種操作符和一些使用細節,希望不會讓你失望。目前超過 50 萬的閱讀說明了 RxJava 確實被人關注,如果你還不 RxJava2,我勸你去翻一翻文檔,寫一寫 Demo。
RxJava2Examples 地址:https://github.com/nanchen2251/RxJava2Examples
GitHub 和公眾號我都會保持維護,期待你與我進行比心的交流。
因為我也曾遇到各種棘手的問題,到處詢問不到答案。
那時候的我,也許正如現在的你。
而我,也還在這條道路上默默前行~
好像有點偏題,但只要還是想給大家推薦 AiYaGirl,因為我相信既有 Java 實現又有 Kotlin 實現的對比,會讓你的 Kotlin 學習事半功倍。
為什么要鼓吹 Kotlin
還是得回到正題,之前可能因為各種各樣的原因,我一直沒把 Kotlin 的學習提上日程,倒是奮斗在 Python 的路上。但自從面試被屢次問到 Kotlin 后,我不得不跟上社會的步伐,開始 Kotlin 的學習,畢竟我是一名 Android 開發呀!
幾天下來,對 Kotlin 不敢說非常了解,但確實被它的簡潔性和易用性吸引到爆,無論是它極佳的函數式編程支持,還是它無比高效地編程方式,讓我時刻為之興奮。
簡單用一點代碼給你展現它的靈活性吧。
比如我們 Java 中這樣一串代碼:
int score = // some score; String grade; switch (score) { case 10: case 9: grade = "Excellent"; break; case 8: case 7: case 6: grade = "Good"; break; case 5: case 4: grade = "OK"; break; case 3: case 2: case 1: grade = "Fail"; break; default: grade = "Fail"; }
當你用 Kotlin 實現后,你會發現,怎么可以這么簡單?
var score = // some score var grade = when (score) { 9, 10 -> "Excellent" in 6..8 -> "Good" 4, 5 -> "OK" in 1..3 -> "Fail" else -> "Fail" }
額,還有對數據類的支持,讓人為之抓狂。
public class Developer { private String name; private int age; public Developer(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Developer developer = (Developer) o; if (age != developer.age) return false; return name != null ? name.equals(developer.name) : developer.name == null; } @Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + age; return result; } @Override public String toString() { return "Developer{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
Kotlin 會怎樣?
data class Developer(val name: String, val age: Int)
對,你沒有看錯,就一行代碼。
只貼代碼從來都是一件不負責任的事,所以我就舉這么兩個例子,如果你喜歡的話,趕緊加入我們 Kotlin 的大軍吧~
Kotlin 是否會取代 Java
不少小伙伴在后台問我這個問題,oh...
這個真的很難說,這個世界上並不是說一件事物好,就必然會得到廣泛應用的。一件事物的出現,會有一群人去推廣,但也會有人會去阻止,只能看誰做的更到位吧~
額外的話
好啦,自從 Kotlin 出來后,事情的發展就變得極其不可控,不少推介者就蹭了好大一波流量,而南塵這么晚再出來鼓吹,應該不會被打吧?