java - Kotlin:从方法返回泛型类型?
问题描述
我有以下一组课程:
data class ApiResponse<T>(val httpCode: String? = null, val data: T? = null, val status: String? = null, val error: String? = null)
data class Customer(val name: String? = null)
data class User(val userId: String = "", val name: String? = null, val description: String? = null)
基本上,我将使用ApiResponse
该类来一般地在字段中存储Customer
或User
或有时Map<String, Any?>
在字段中存储 a 的实例。data
有了这些对象,我写了这个方法:
private fun handleError(errorJson: String?): ApiResponse<Customer> {
var response: ApiResponse<Customer>
try {
response = objectMapper.readValue(errorJson, object: TypeReference<ApiResponse<Customer>>(){})
} catch (ex: Exception) {
// unable to parse
response = ApiResponse(
status = "500",
error = "Unknown error"
)
}
return response
}
基本上,我的问题是如何使此方法更通用,以便可以将相同的代码用于Customer
, User
,Map<String, Any?>
对象?当我调用此方法时,我会知道预期的返回类型。
解决方案
您正在寻找具体的类型参数:
private inline fun <reified T> handleError(errorJson: String?): ApiResponse<T> {
var response: ApiResponse<Customer>
try {
response = objectMapper.readValue(errorJson, object: TypeReference<ApiResponse<T>>(){})
} catch (ex: Exception) {
// unable to parse
response = ApiResponse(
status = "500",
error = "Unknown error"
)
}
return response
}
推荐阅读
- javascript - 我可以为日期范围选择器添加一个输入数字来调整结束日期吗?
- javascript - Webpack 开发服务器错误创建 dist 文件夹
- python - 提取特定年份的所有行值
- python - Keras:使用 flow_from_directory 为训练数据绘制图像增强样本
- c++ - 使用 C 函数时如何测试 C++ 代码
- spring-boot - 是否有第三方服务可以进行 api 密钥管理,同时不需要用户在 GCP 上创建帐户?
- java - 由于添加 JPanel 导致的 NullPointerException 错误
- r - 从年度到月度的爆炸式数据
- python - 我有一个单列数据。我想重塑它,这样我就可以将它用于 RNN
- html - HTML/CSS 图像和文本重叠