gpt4 book ai didi

generics - 从具有 null 的静态函数返回 Template 时如何获取正确的类型

转载 作者:行者123 更新时间:2023-12-01 09:52:49 25 4
gpt4 key购买 nike

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

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

编译器无法推断Observable.just(null)因为它替代了 kotlin.Nothing作为T在这个表达式中:

Type mismatch: required rx.Observable<T?> found rx.Observable<kotlin.Nothing?>

尝试转换:

Observable.just(null as T)

导致:

The cast will never succeed

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

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

转换这样一个 Observable 的正确方法是什么?到正确的类型?中间变量:

val a: Observable<T?> = Observable.just(null)

有效,但看起来很奇怪......

最佳答案

Observable.just(null as T?) 行得通吗?

您的原始转换永远不会起作用,因为 T 是不可为 null 的类型,因此不能将 null 转换为它。因此,将其转换为可为 null 的 T(又名 T?)应该可行。

关于generics - 从具有 null 的静态函数返回 Template<T?> 时如何获取正确的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34632720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com