如何在Kotlin中声明一个包含泛型类型字段的类?
在Kotlin我有一个数据类。
data class APIResponse<out T>(val status: String, val code: Int, val message: String, val data: T?)
我想申报另一个类来包含这个:
class APIError(message: String, response: APIResponse) : Exception(message) {}
但是Kotlin给出的错误是:在com.mypackagename中定义的APIResponse类的一个类型参数
在Java中,我可以这样做:
class APIError extends Exception { APIResponse response; public APIError(String message, APIResponse response) { super(message); this.response = response; } }
我如何将代码转换为Kotlin?
您在Java中拥有的是原始类型 。 Kotlin文档在星形投影部分说:
注意:星形投影非常类似Java的原始类型,但安全。
他们描述了他们的用例:
有时候你想说,你对类型参数一无所知,但仍然想要以一种安全的方式使用它。 这里的安全方法是定义泛型类型的投影,使得泛型类型的每个具体实例都是该投影的子类型。
你的APIError
类因此变成:
class APIError(message: String, val response: APIResponse<*>) : Exception(message) {}