如何从静态函数返回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) 

作品,但看起来很奇怪…

最简单的解决方法是显式指定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? )应该可以工作。