Retrofit2+Rxjava2 异常解决 Parameter type must not include a type variable or wildcard

今天在使用Retrofit2+Rxjava2框架 上传jsonArray数据

上传以下数据放入服务器在这里插入图片描述
添加接口

  //批量增加人脸
    @Headers("Content-Type: application/json")//需要添加头
    @POST("face/saveBatchFaceInfo")
    fun saveBatchFaceInfo(@Body faceInfoList:List<FaceInfoEntity>): Observable<ResultEntity>

当前写法是

var faceInfo =List<FaceInfoEntity>
   RetrofitHelper.getApi().saveBatchFaceInfo(faceInfo)
            .map {
                return@map it
            }
            .compose(RxUtils.rxSchedulerHelper())
            .subscribe({
            }, {
                mView.showError("${it.message}")
            })

结果显而易见 报错了

Parameter type must not include a type variable or wildcard: java.util.List<实体类> (parameter #1)
    for method Api.saveBatchFaceInfo
  

这个是是由于实体在Kotlin下不能被确认 需要再加下转换 就可以了
解决办法
入参加下转换就可以了

  RetrofitHelper.getApi().saveBatchFaceInfo(getFace(faceInfo))
private fun <T> getFace(list: List<T>): List<FaceInfoEntity> {
        val faces = LinkedList<FaceInfoEntity>()

        list as List<FaceInfoEntity>
        list.forEach {
            val face = FaceInfoEntity()
            
     		//添加具体属性
     		
            faces.add(face)
        }
        return faces
    }

这样就可以直接用了

时隔几天 突然发现一个很简便的的方法
直接添加注解 就可以了@JvmSuppressWildcards

//批量增加人脸
    @Headers("Content-Type: application/json")//需要添加头
    @POST("face/saveBatchFaceInfo")
    fun saveBatchFaceInfo(@Body faceInfoList:@JvmSuppressWildcards List<FaceInfoEntity>): Observable<ResultEntity>`

猜你喜欢

转载自blog.csdn.net/qq_28643195/article/details/107407292
今日推荐