版權聲明:本文為xing_star原創文章,轉載請註明出處! 本文同步自http://javaexception.com/archives/218 kotlin之變數的可空與非空 上面一篇文章,介紹了kotlin的變數與常量,以及修飾為常量或者是變數的評估標準。本篇文章主要想說的是一個變數的可空與非 ...
版權聲明:本文為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