如何从静态函数返回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? )应该可以工作。

  • 如何在Kotlin中引用外部类的实例?
  • 如何解决我的代码,以消除铸造警告?
  • 用匕首使用Kotlin
  • 是否有可能使用jdk 7运行kotlin等级插件
  • 为什么Kotlin比Scala编译速度更快?
  • Kotlin Hibernate OneToOne fetchtype.LAZY立即运行所有查询
  • Kotlin IllegalAccessError用+ =和 - =代表接口
  • 与新的类Kotlin recyclerView
  • 我们如何快速返回Kotlin函数中的多个值?
  • 在Kotlin中使用传递给分支条件的参数?
  • Kotlin kotlinClass.class.getName()不能返回包名,而只能返回简单的类名
  • Kotlin language will be the best programming language for Android.