定义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 

如果tagObjectRequestRecenterDetailstagObject中心赋予tagObject的值,否则将其赋值为null

原因是,你的变量centerNothing?类型的Nothing? 。 您可以通过说:

 var center: Any? = null 

但是这不适用于这种通用类型。

你只需要指定类型,因为它不是清楚的编译器,我建议你把尽可能最高的普通可能的类型(对RequestCenterDetailsCenter ),或者只要你可以接受任何类型的任何类型:

var center: Any = null

要么

var center: CommonBaseClass = null