版權聲明:本文爲xing_star原創文章,轉載請註明出處!java
本文同步自http://javaexception.com/archives/218生命週期
上面一篇文章,介紹了kotlin的變量與常量,以及修飾爲常量或者是變量的評估標準。本篇文章主要想說的是一個變量的可空與非空。從字面意思上來看,可空就是容許變量的值是null,非空就是不容許變量的值是null。get
那麼怎麼知道一個變量應該被設置爲可空的仍是非空的呢?同步
通常而言,對於集合類,好比List或者是MutableList,直接設置爲非空類型就行了。好比private var list: MutableList<String> = mutableListOf()it
對於普通的Model或者是Android中的View或Fragment,設置爲可空就好,它們通常是在後續的程序流程中被賦值的。好比View類,一個TextView或ImageView須要在onCreate()方法體內被賦值,在此以前,是不可能知道它的值的,因此,咱們通常這樣聲明,private var textView: TextView? = null 。 Fragment也是同樣的,咱們在類的成員變量裏面只能作一個申明,具體的賦值,是在Android Activity生命週期方法中,因此,寫法是這樣的。private var fragment: Fragment? = null。io
若是對於普通Model或者是View這樣的類型,不想設置爲可空,那麼也是有辦法的,好比委託的方式,以及lateinit的方式。可是通常狀況下,仍是設置爲可空。除非你真的想要非空,才設置爲非空類型,非空類型如何聲明呢,舉個String類型的例子,private var content: String = 「hello」table
若是你們有真正在生產環境中實踐過kotlin的話,那麼應該頗有感觸,會碰到一些彆扭的地方,好比textView?.setOnClickListener{//todo} textView?.text = 「hello」相似這樣的代碼塊。咱們明確的知道textView不會爲空,可是因爲語法的緣由,一旦聲明爲可空,後面就必須帶上?.的判斷代碼。這個咱們再下一篇給出一種解決辦法,來規避View的這種問題,將View定義爲非空類型。變量
kotlin之變量與常量 http://javaexception.com/archives/217kotlin