可以直接把函數(shù)申明在文件中
空安全設(shè)計
- 聲明變量類型后面加?表示可空類型:
et_name: EditText? = null
-
java
中也有不為空設(shè)定加上注解:@NonNull
- 在調(diào)用可空類型函數(shù)時,
!!.
表示強行調(diào)用,如果對象是空嗡善,就會拋出null
異常蜗字。?.
會先判斷是否為null
,如果不為空才會調(diào)用該對象的函數(shù)铅辞。 - 如果保證絕對不為
null
埋酬,肯定會初始化的時候哨啃,可以使用lateinit
關(guān)鍵字,這樣調(diào)用函數(shù)的時候也不用判斷是否為null
了
java
中instanceof
關(guān)鍵字來判斷類型写妥,kotlin
中使用is
關(guān)鍵字來判斷類型
kotlin
中as
關(guān)鍵字完成強制轉(zhuǎn)換
kotlin
中獲取類對象拳球,使用::class
來獲取kotlin
類對象,::class.java
來獲取java
類對象珍特。
構(gòu)造方法
構(gòu)造方法調(diào)用多參數(shù)構(gòu)造方法
constructor(context: Context): this(context, null){
}
構(gòu)造器繼承父類方法
constructor(context: Context, attr: AttributeSet?): super(context, attr){
}
數(shù)組
聲明數(shù)組
-
val codeList = arrayOf("1", "2")
arrayof
對于基本類型會有裝箱操作祝峻,所以對性能和內(nèi)存有開銷,所幸kotlin
有intArrayof
數(shù)組等扎筒。
集合
-
val list: MutableList<Int> = ArrayList()
創(chuàng)建集合或者使用ArrayList
創(chuàng)建莱找,List<Int>
創(chuàng)建的集合是不可修改的集合。也可直接使用:arrayListOf<>()
,mutableListOf<>()
嗜桌。
靜態(tài)變量和函數(shù)
- 直接在文件里直接定義的函數(shù)(不是在
class
文件里定義的函數(shù))就是靜態(tài)函數(shù)也叫頂級函數(shù)奥溺。在
kotlin
中直接就可以調(diào)用,而在java
中調(diào)用需要文件名加Kt然后調(diào)用方法症脂,比如:UtilsKt.dp2px()
谚赎。 - 當用
object
修飾一個類淫僻,那么這個類的所有方法和屬性都是靜態(tài)的诱篷。java
調(diào)用時使用函數(shù)的時候需要使用類名.INSTANCE.
函數(shù)。
可以使用object
來生成一個單例對象雳灵。 - 伴生對象創(chuàng)建靜態(tài)變量和函數(shù):
companion object{ }
java
使用這種方式調(diào)用函數(shù)時需要類名.Companion.
函數(shù)方式調(diào)用
code in 200..299
表示code
的值在200
和299
之間包括200
和299
棕所。
枚舉類型enum class
定義
java
中匿名內(nèi)部類引用外部類對象的時候使用:類名.this.
屬性。kotlin
中this@
類名.屬性
內(nèi)部類
- 在
kotlin
中直接創(chuàng)建內(nèi)部類就是靜態(tài)內(nèi)部類悯辙,普通內(nèi)部類需要用到inner
關(guān)鍵字琳省。在
kotlin
中如果不想其他的module
可以訪問當前mudule
中的類迎吵,可以在類名前面加上internal
關(guān)鍵字。
繼承
kotlin
中只有被abstract
针贬、open
击费、interface
修飾的關(guān)鍵字才可以被繼承。