kotlin之变量的可空与非空
版权声明:本文为xing_star原创文章,转载请注明出处!
本文同步自
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之变量与常量