不满意:推断为T型?不是Any的子类型

Quo*_*oon 2 generics bounds kotlin kotlin-android-extensions

为了映射结果,我实现了密封的泛型类:

public sealed class ResultMapper<out T : Any> {
    public class Ok<out T : Any>(public val value: T,
                            override val response: Response) : Result<T>(), ResponseResult {
        override fun toString(): String = "Result.Ok{value=$value, response=$response}"
    }
}

   public interface ResponseResult {
     val response: Response
   } 
Run Code Online (Sandbox Code Playgroud)

现在,我假设该类应该按预期的方式工作:

 ResultMapper.Ok(body,raw)

private class Body<T>() {
  onResponse(response: Response, raw: Raw) {
   ResultMapper.Ok(response.body(),response.raw()) --> It returned an exception
  }
}
Run Code Online (Sandbox Code Playgroud)

构造函数Ok不满意:推断类型T?不是Any的子类型

s1m*_*nw1 5

该类Body具有通用类型参数,T没有任何限制,即就像定义,T: Any?Ok的类型参数限于T: Any。您应该调整Body为不允许以下两种情况之一:

class Body<T: Any>
Run Code Online (Sandbox Code Playgroud)

或者,删除其他类的上限。