版權(quán)聲明:本文為xing_star原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處! 本文同步自http:///archives/218 kotlin之變量的可空與非空上面一篇文章,介紹了kotlin的變量與常量,以及修飾為常量或者是變量的評(píng)估標(biāo)準(zhǔn)。本篇文章主要想說(shuō)的是一個(gè)變量的可空與非空。從字面意思上來(lái)看,可空就是允許變量的值是null,非空就是不允許變量的值是null。 那么怎么知道一個(gè)變量應(yīng)該被設(shè)置為可空的還是非空的呢? 一般而言,對(duì)于集合類,比如List或者是MutableList,直接設(shè)置為非空類型就好了。比如private var list: MutableList<String> = mutableListOf() 對(duì)于普通的Model或者是Android中的View或Fragment,設(shè)置為可空就好,它們一般是在后續(xù)的程序流程中被賦值的。比如View類,一個(gè)TextView或ImageView需要在onCreate()方法體內(nèi)被賦值,在此之前,是不可能知道它的值的,所以,我們一般這樣聲明,private var textView: TextView? = null 。 Fragment也是一樣的,我們?cè)陬惖某蓡T變量里面只能做一個(gè)申明,具體的賦值,是在Android Activity生命周期方法中,所以,寫法是這樣的。private var fragment: Fragment? = null。 如果對(duì)于普通Model或者是View這樣的類型,不想設(shè)置為可空,那么也是有辦法的,比如委托的方式,以及l(fā)ateinit的方式。但是一般情況下,還是設(shè)置為可空。除非你真的想要非空,才設(shè)置為非空類型,非空類型如何聲明呢,舉個(gè)String類型的例子,private var content: String = “hello” 如果大家有真正在生產(chǎn)環(huán)境中實(shí)踐過(guò)kotlin的話,那么應(yīng)該很有感觸,會(huì)碰到一些別扭的地方,比如textView?.setOnClickListener{//todo} textView?.text = “hello”類似這樣的代碼塊。我們明確的知道textView不會(huì)為空,但是由于語(yǔ)法的原因,一旦聲明為可空,后面就必須帶上?.的判斷代碼。這個(gè)我們?cè)傧乱黄o出一種解決辦法,來(lái)規(guī)避View的這種問(wèn)題,將View定義為非空類型。 |
|