定义null局部变量时需要没有错误,稍后在方法中进行设置
我已经定义的变量是null,但后来基于view.tag对象类型我必须设置它。但它说Required Nothing found RequestCenterDetails
。 以下是我如何试图做到这一点
holder?.addressIcon?.setOnClickListener { val tagObject = holder.institutecardView.getTag(R.id.item_institute_cardview) var center=null if(tagObject is RequestCenterDetails) { Log.d("location","-------------TEST----------- its a RequestCenter") center=tagObject as RequestCenterDetails // over here it say "Required Nothing found RequestCenterDetails" } else if(tagObject is Center) { Log.d("location","-------------TEST----------- its a Center") }
问题是,我必须根据字段值采取相同的操作,但两个对象都有不同的字段名称。 有没有更好的方法来做到这一点。 我是kotlin的新手。
如果你知道center
将是RequestCenterDetails
,那么
var center: RequestCenterDetails? = null
如果center
也可以是另一种类型,那么做
var center: Any? = null
你正在做的更简洁的版本将是:
var center: RequestCenterdetails? = tagObject as? RequestCenterDetails
如果tagObject
是RequestRecenterDetails
, tagObject
中心赋予tagObject
的值,否则将其赋值为null
。
原因是,你的变量center
有Nothing?
类型的Nothing?
。 您可以通过说:
var center: Any? = null
但是这不适用于这种通用类型。
你只需要指定类型,因为它不是清楚的编译器,我建议你把尽可能最高的普通可能的类型(对RequestCenterDetails
和Center
),或者只要你可以接受任何类型的任何类型:
var center: Any = null
要么
var center: CommonBaseClass = null