Oop 返回泛型对象时在scala中发现不匹配
我有以下方法:Oop 返回泛型对象时在scala中发现不匹配,oop,scala,types,playframework-2.1,Oop,Scala,Types,Playframework 2.1,我有以下方法: def addProduct(language:String, tenantId:String, product:Product): BaseResponse[String] = { ... } catch { var errorResponse = ErrorResponseList.GeneralError errorResponse.addMessage(ex.getMessage()) errorResponse // <= With this
def addProduct(language:String, tenantId:String, product:Product): BaseResponse[String] =
{
...
}
catch
{
var errorResponse = ErrorResponseList.GeneralError
errorResponse.addMessage(ex.getMessage())
errorResponse // <= With this, i cant compile !
//ErrorResponse(ErrorCode.GeneralError, ex.getMessage, 500) // <= With this, I CAN Compile
}
var errorResponse = ErrorResponseList.GeneralError
我的代码未编译,它会引发错误:
type mismatch; found : model.ErrorResponse[Nothing] required: model.BaseResponse[String] Note: Nothing <: String, but class BaseResponse is invariant in type T. You may wish to define T as +T instead. (SLS 4.5)
但在构建对象时不使用helper方法将编译。。我不明白为什么,都一样
谢谢 您正在ErrorResponse中使用类型参数,但从不提供类型值 您需要执行以下操作之一: 创建ErrorResponse时显式提供类型参数 或者,如果T与ErrorResponse的属性之一对应,则为该属性指定一个T类型
ErrorResponse[T](errCode: Int = -1, var errMessage: T, httpCode:Int)
如果T是所有ErrorResponse的字符串,请从ErrorResponse的定义中删除T,并将字符串传递给它的超类:
case class ErrorResponse(
errCode: Int = -1, var errMessage: String = "", httpCode:Int
) extends BaseResponse[String]
ErrorResponse[T](errCode: Int = -1, var errMessage: T, httpCode:Int)
case class ErrorResponse(
errCode: Int = -1, var errMessage: String = "", httpCode:Int
) extends BaseResponse[String]