2

是否可以?我如何向编译器解释它的相同类型(BR)扩展了相同的类?下面的代码失败

class BaseRepository<BR: BaseResponse>() {

sealed class BaseSealedResponse {
    open class Success(val receivedValue: BR)
    open class RequestError(val error: HttpException)
}
}
4

1 回答 1

1

不,那是不可能的。只有inner可以引用外部类型的类型参数。一个sealed类不能被标记为inner,所以它只能访问自己的类型参数:

class BaseRepository<BR: BaseResponse>() {
    sealed class BaseSealedResponse {
        open class Success<B: BaseResponse>(val receivedValue: B)
        open class RequestError(val error: HttpException)
    }
}

您可以在内部定义一个成员函数BaseRepository,该函数创建Success参数化的实例BR

fun Success(receivedValue: BR) = BaseSealedResponse.Success(receivedValue)
于 2018-03-20T22:14:21.480 回答