閱讀704 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Getting started with Kotlin on Android

kotlin_android

2017年3月26日,ThoughtWorks高級谘詢師張帥、王智勇在“Mobile Open Day—小步構建移動開發知識網絡”進行《Getting started with Kotlin on Android》演講分享。IT大咖說作為獨家視頻合作方,經主辦方和講者審閱授權發布。

_
_
嘉賓分享視頻地址:https://t.cn/RKwZwbZ

Java VS Kotlin

在Java的使用中會遇到很多問題。它的語法繁瑣,API低級;隨時可能出現null pointer問題;有各種各樣的util類和混亂的泛型。

Data Class
在Java Bean裏有成員函數string topic、string type和list speakers。

Getter/Setter可以使Java成員既有封裝性,又能對外暴露很多接口。

還有很多其它的方法,比如toString、hashCode和equals。
1
2

Singleton
3

而Kotlin要實現一個單例,隻需一個關鍵字“object”。

Optional
Null pointer是代碼中一個常見的bug。
4

Late-Initialized&Lazy
在代碼中經常會遇到一些方法,它們不需要在構造函數中進行初始化操作,這時就可以通過lateinit var關鍵字把它聲明成懶加載模式。

Full name是通過last name和first name組裝起來的,隻有用到full name的時候,才會調出lazy的這個表達式,生成一個值,非常方便,解決了懶加載的問題。

Extensions
在Java中,要想擴展一個類,我們會寫一堆Utils。

而在Kotlin中,我們可以直接對double對象進行擴展,再也不需要Utils的類了。

Collections
常見的Collections有Stack、Map、Queue和List等等。

在Kotlin中把Collections分為mutable和immutable兩類,這樣有助於消除錯誤,設計更好的API。

Generics
我們要創造一個協變的應用才能引用它子類的集合,與之對應的還有逆變。

在Kotlin裏數組默認不是協變的。
5

對於不可變集合是默認協變,可變集合默認是逆變的。

總結一下
Kotlin提供了高級的語法,例如data、object等。

對於null pointer問題,它有optional對象。

有val、late-intialized、lazy和Collections支持。

可以用擴展語法讓代碼更加可讀。

Generics簡單好用。

Kotlin cool feature

Inline function
如果在開發過程中發現有性能問題,可以把代碼進行優化,在代碼運行起來之後,body block會被封裝成一個函數對象。加入了Inline,body就會被Inline到函數調用的地方去。

Inline還有個功能叫reified。當我們讀取網絡返回的時候,會用Gson來解析字符串,在寫的過程中會發現語法有冗餘。引入reified以後,可以把類型聲明成reified,這樣在函數題裏就會引用到這個類型具體的Class。Kotlin有一定的類型推導功能。

Sealed Class
SealedClass可以限製住一個副類一共有多少個子類。

Delegated properties
對於一個property,可以把它Delegated一個對象上,每當讀寫property的時候,它都會調用對應的函數。

Coroutines
6
Coroutines把回調式的寫法改成了流式的寫法。

總結一下
Inline function減少了運行的開銷。
SeadledClass限製了類的層級。
Delegate使得代碼更加簡潔。
Coroutines提高了異步代碼的可讀性。

Kotlin in Android

在Android上有一個常見的類叫做viewholder。
7

Kotlin在Android上可以自動把view找出來,不需要手寫代碼。

Kotlin's Reference

引入Kotlin
8

已知問題
Kotlin與mockito的兼容性。
在Kotlin裏的靜態代碼檢查工具還不完善。
Kotlin對於Java裏的一些關鍵詞和操作符的語義做了改變。

以上是我今天分享的內容,感謝聆聽!

福利贈票!

IT大咖說作為7月24日OpenStack Days China大會(在北京國家會議中心舉行)的官方現場直播合作夥伴,特為小夥伴們爭取了少量免費VIP票福利(原價¥600)!

獲取方式:

掃碼加這位小姐姐微信(或加微信號:ITDKS666),她會告訴你咋整!(備注:openstack)
__20170710103228
_

最後更新:2017-07-13 11:32:31

  上一篇:go  ubuntu maven
  下一篇:go  【收藏】首份《頂級數據團隊建設全景報告》重磅發布: 逾半數據團隊稱人才儲備不足