Alexjok
04/03/2019, 2:37 PMclass MyRequest<T>(private var url: String? = null,
private var timeOut: Int = 1,
private var token: String? = null,
private var httpType: HttpType? = null,
private var httpParamas: List<Pair<String, String>> = listOf(),
private var returnResultAs: T? = null) {
data class Builder(
var url: String? = null,
var httpType: HttpType? = null,
var timeOut: Int = 1,
var token: String? = null,
var httpParamas: List<Pair<String, String>> = listOf()) {
fun url(url: String) = apply { this.url = url }
fun httpType(httpType: HttpType) = apply { this.httpType = httpType }
fun timeOut(timeOut: Int) = apply { this.timeOut = timeOut }
fun httpParamas(httpParamas: List<Pair<String, String>>) = apply { this.httpParamas = httpParamas }
fun token(token: String) = apply { this.token = token }
fun build() = MyRequest(url = url,
timeOut = timeOut,
token = token,
httpType = httpType,
httpParamas = httpParamas
)
}
}
Может есть какие-нибудь другие способы сделать, что-то подобное.gildor
04/03/2019, 2:46 PMAlexjok
04/03/2019, 3:05 PMfun main(args: Array<String>) {
val req = MyRequest.Builder().url("<http://www.ok.com|www.ok.com>")
.returnResultAs(String::class.java)
.build()
val result = req.execute() //результатом будет строка
}
class MyRequest<T>(private var url: String? = null,
private var returnResultAs: T? = null) {
data class Builder(
var url: String? = null,
var returnResultAs: Class<*>? = null) {
fun url(url: String) = apply { this.url = url }
fun returnResultAs(returnResultAs: Class<*>?) = apply { this.returnResultAs = returnResultAs }
fun build() = ArcGisRequest(url = url,
timeOut = timeOut,
token = token,
httpType = httpType,
httpParamas = httpParamas,
returnResultAs = returnResultAs
)
}
fun execute(): T {
//делаем что-то в результате возвращаем переданный в returnResultAs тип
return returnResultAs!!
}
}
Идея в том, чтобы время создания обьекта передавать в Builder тип, который мы хотим вернуть (параметр "returnResultAs") и затем при вызове execute() получать его.gildor
04/03/2019, 3:06 PMAlexjok
04/03/2019, 3:12 PM