列表<? 生成 extends Something > 而不是 List<Something>

Nar*_*ari 6 java generics android kotlin rx-java2

我有一个服务调用,它返回一个 JSON 响应,然后通过数据管理器传递该响应,如果服务成功,则该数据管理器会转换数据;如果调用失败,则创建一个错误正文。

数据管理器是用 kotlin 编写的,我感兴趣的特定代码行是这样的

val mutableList = mutableListOf<Address>()
return Result.error(errorTransformation(serviceErrors, mutableList))
Run Code Online (Sandbox Code Playgroud)

我的 errorTransformation 类基本上是一个 Exception 调用,这是用 java.io.ErrorTransformation 编写的。异常类的构造函数是

ExceptionClass(ServiceErrors serviceError ,List<Address> address){
    // initiialize fields here
}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试初始化异常类时,它说找到了适当的构造函数,并且向我显示了使用语法生成异常类的建议

ExceptionClass(ServiceErrors serviceError ,List<? extends Address> address){
    // initiialize fields here
}
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?我只想要List<Address>,不想要List<? extends Address>

Con*_*Var 2

隐式使用而不是是kotlin特定的行为。您可以使用注释强制kotlin准确生成您需要的内容List<? extends Address>List<Address>@JvmSuppressWildcards

val mutableList = mutableListOf<@JvmSuppressWildcards Address>()
Run Code Online (Sandbox Code Playgroud)