kotlin 有人能解释一下这段代码中的泛型吗?

jm81lzqq  于 2023-03-19  发布在  Kotlin
关注(0)|答案(1)|浏览(129)

我不明白“out T”在这段Kotlin代码中的作用。有人能详细解释一下吗?

sealed class ResultWrapper<out T> {
  data class Success<out T>(val value: T): ResultWrapper<T>()
  data class GenericError(val code: Int? = null, val error: ErrorResponse? = null): ResultWrapper<Nothing>()
  object NetworkError: ResultWrapper<Nothing>()
}
izkcnapc

izkcnapc1#

T仅仅意味着类is正在使用一个特定类型的对象,但是我们在编译时不知道它是什么,所以我们暂时将它命名为T(你可以使用任何字母,T只是一个约定)。
这使得代码具有泛型性,我们不希望用Any代替T,因为稍后我们可能希望调用T类型对象的特定方法,而不必进行强制转换。

相关问题