如何从静态函数返回Template 时使用null来获取正确的types

我正在尝试一些Rx和Kotlin。 假设我有一个返回Observable的函数:

 public fun get():Observable { return if (someCondition()) { Observable.just(someLocalVarOfTypeT) } else { Observable.just(null) } } 

编译器无法推断Observable.just(null)因为它在此expression式kotlin.Nothing替换为T

 Type mismatch: required rx.Observable found rx.Observable 

试图施放:

 Observable.just(null as T) 

导致:

 The cast will never succeed 

Observable.just(null)的签名是(为了方便起见):

 public final static  Observable just(final T value) { return ... } 

将这样一个Observable转换成正确types的正确方法是什么? 中间variables:

 val a: Observable = Observable.just(null) 

作品,但看起来很奇怪…

2 Solutions collect form web for “如何从静态函数返回Template 时使用null来获取正确的types”

最简单的解决方法是显式指定generics参数:

 public fun get(): Observable { return if (someCondition()) { Observable.just(someLocalVarOfTypeT) } else { Observable.just(null) } } 

Observable.just(null as T?)工作?

你原来的演员将永远不会工作,因为T是一个不可为空的types,所以null不能被投给它。 所以把它转换成可空的T (又名T? )应该可以工作。

  • 与JPA Kotlin:默认构造函数地狱
  • 地图在Firebase onDataChange在Kotlin
  • 未解决的参考:KOTLIN需要2个版本清理后,拿起代码时使用kapt
  • Kotlin构造函数(主构造函数)
  • 科特林代表团的expression,而不是固定的参考
  • 接口generics过载
  • Android:Kotlin TypeCastException:null不能转换为非nulltypes的kotlin.String
  • 具有派生属性的Kotlin数据类
  • java.lang.VerifyError用kotlin创建一个gradle任务
  • Android中的MVVM绑定
  • 如何检查kotlin中的lambda空虚
  • Kotlin language will be the best programming language for Android.