定义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的新手。

3 Solutions collect form web for “定义null局部变量时需要没有错误,稍后在方法中进行设置”

如果你知道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

  • 泛化参数和返回类型的泛化方法
  • 当我期望两个函数时,如何只传递一个参数给函数?
  • 未解决的参考:KOTLIN需要2个版本清理后,拿起代码时使用kapt
  • Kotlin-Exposed在他们的wiki上的例子是行不通的
  • 不同的方式来应用插件? (Gradle Kotlin DSL)
  • 在Kotlin拼合数组
  • Recyclerview查看共享状态
  • 在Kotlin(Android)中以字符串形式读取文本资产(来自assets文件夹的文本文件)
  • 我怎样才能引用从Java的伴侣对象?
  • 响应状态HTTP SpringBoot Kotlin Api
  • 在Kotlin使用Kovenant Promise.of(价值)有时我泄漏异常
  • Kotlin language will be the best programming language for Android.