Kotlin中!! 和 ?的使用

1、?修饰申明在成员变量的类型后面

表示这个变量可以为null,例如:

在类中成员变量

private var mAa: AlphaAnimation? = null

在方法中局部变量:

var mAa: AlphaAnimation? = null

在方法传参的形式参中:

override fun initView(savedInstanceState: Bundle?) {
 
}

2、?放在对象后面代表该对象如果为null则不处理后面逻辑,!!放在对象后面代表该对象如果为null则抛异常

例如:

//tv_appconfig为null会抛异常

tv_appconfig!!.text = CallSystemFunUtils.getAppVersionName(baseContext) 

//tv_appconfig为null后面代码不执行

tv_appconfig?.text = CallSystemFunUtils.getAppVersionName(baseContext)

这里要控制好度,那些代码为空不想让它执行,那些代码为空想让它抛异常得到错误信息。

3、!! 放在方法传递实参后面,也是代表不能为null,为null会抛异常

rootView!!.startAnimation(mAa!!)

4、如果想要执行一段非空代码块,建议使用let操作符

例如:object?.let{  //object非空才会执行代码块

       it.todo()

}

5、尽量少使用 !!,多使用?

猜你喜欢

转载自blog.csdn.net/wuqiqi1992/article/details/107605363