有可能吗? 如何向编译器表明它的同一类型(BR)扩展了同一个类? 下面的代码失败
class BaseRepository<BR: BaseResponse>() {
sealed class BaseSealedResponse {
open class Success(val receivedValue: BR)
open class RequestError(val error: HttpException)
}
}
答案 0 :(得分:1)
不,那是不可能的。只有inner
classes可以引用外部类型的类型参数。 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)