【发布时间】:2019-11-11 04:43:17
【问题描述】:
我正在使用两个具有不同输入类型的构造函数,一个是字符串,另一个是泛型。问题是在使用 Kotlin 时,它只使用字符串构造函数并忽略了泛型
class DataResponse<T> {
var isSuccess: Boolean = false
private set
var errorMessage: String? = null
var data: T? = null
constructor(success: Boolean, data: T) {
this.isSuccess = success
this.data = data
}
constructor(success: Boolean, errorMessage: String) {
this.isSuccess = success
this.errorMessage = errorMessage
}
}
用法
if (apiResponse.code() == 200) {
Observable.just(DataResponse<List<ResultDTO>>(true,
apiResponse.body()?.resultList)) ---> **(error on this line forcing to convert it to string)**
} else {
Observable.just(DataResponse(false, "Something went wrong"))
}
【问题讨论】:
-
是否有理由同时保留
isSuccess和errorMessage?我只保留错误消息并将isSuccess更改为函数或val在错误为空的情况下返回true。也许引入静态工厂来调用错误/成功构造函数,我认为当你有 2 个构造函数本质上改变你的对象所代表的内容时,这有点令人困惑。如果T是String,这也将解决构造函数“冲突”的问题。
标签: android generics kotlin kotlin-android-extensions constructor-overloading