著作權宣告:本文為xing_star原創文章,轉載請注明出處!
本文同步自http://javaexception.com/archives/218
kotlin之變數的可空與非空
上面一篇文章,介紹了kotlin的變數與常量,以及修飾為常量或者是變數的評估標準,本篇文章主要想說的是一個變數的可空與非空,從字面意思上來看,可空就是允許變數的值是null,非空就是不允許變數的值是null,
那么怎么知道一個變數應該被設定為可空的還是非空的呢?
一般而言,對于集合類,比如List或者是MutableList,直接設定為非空型別就好了,比如private var list: MutableList<String> = mutableListOf()
對于普通的Model或者是Android中的View或Fragment,設定為可空就好,它們一般是在后續的程式流程中被賦值的,比如View類,一個TextView或ImageView需要在onCreate()方法體內被賦值,在此之前,是不可能知道它的值的,所以,我們一般這樣宣告,private var textView: TextView? = null , Fragment也是一樣的,我們在類的成員變數里面只能做一個申明,具體的賦值,是在Android Activity生命周期方法中,所以,寫法是這樣的,private var fragment: Fragment? = null,
如果對于普通Model或者是View這樣的型別,不想設定為可空,那么也是有辦法的,比如委托的方式,以及lateinit的方式,但是一般情況下,還是設定為可空,除非你真的想要非空,才設定為非空型別,非空型別如何宣告呢,舉個String型別的例子,private var content: String = “hello”
如果大家有真正在生產環境中實踐過kotlin的話,那么應該很有感觸,會碰到一些別扭的地方,比如textView?.setOnClickListener{//todo} textView?.text = “hello”類似這樣的代碼塊,我們明確的知道textView不會為空,但是由于語法的原因,一旦宣告為可空,后面就必須帶上?.的判斷代碼,這個我們再下一篇給出一種解決辦法,來規避View的這種問題,將View定義為非空型別,
kotlin相關文章
kotlin之變數與常量 http://javaexception.com/archives/217
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/58596.html
標籤:Android
下一篇:Android: Unable to resolve dependency for ':app@debugUnitTest/compileClasspath':
