Kotlin 使用Int创建行为主题

Kotlin 使用Int创建行为主题,kotlin,Kotlin,如何使用Int创建此主题的实例: class NonNullableBehaviourSubject<T : Any>(defaultValue: T) : Subject<T>() { private val behaviourSubject = BehaviorSubject.createDefault<T>(defaultValue) } 但我使用以下命令得到一个编译错误: emailValidationSubject.onNext(error?

如何使用Int创建此主题的实例:

class NonNullableBehaviourSubject<T : Any>(defaultValue: T) : Subject<T>() {
   private val behaviourSubject = BehaviorSubject.createDefault<T>(defaultValue)
}
但我使用以下命令得到一个编译错误:

emailValidationSubject.onNext(error?.errorResId)
我得到的编译错误是:

Required: Companion.Int
Found: Int?

此外,Int不能为null。但是,NonNullableBehaviorSubject确实定义了一个可为null的参数。

您的
error
对象具有可为null的类型,并且您对其使用安全调用(
?。
),因此整个表达式是可为null的。
要使值不可为null,您可以断言value not null(
error!!.errorResId
如果
error
为null,则会崩溃,
error?.errorResId!!
如果整个表达式为null,则会崩溃)或者为null情况提供回退值(
(error?:DEFAULT\u error).errorResId
error?.errorResId?:默认的\u error\u RES
)。

您的
error
对象具有可空类型,并且您对其使用安全调用(
?。
),因此整个表达式可空。
要使值不可为null,您可以断言value not null(
error!!.errorResId
如果
error
为null,则会崩溃,
error?.errorResId!!
如果整个表达式为null,则会崩溃)或者为null情况提供回退值(
(error?:DEFAULT\u error).errorResId
error?.errorResId?:默认值\u error\u RES
)。

它也应该是
非空行为主体(0)
(或其他一些
Int
)而不是
非空行为主体(Int)
。它还应该是
非空行为主体(0)
(或其他一些
Int
)而不是
非空行为主题(Int)
Required: Companion.Int
Found: Int?