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