java - 当返回值因条件而异时使用 Generic
问题描述
我想在不使用对象的情况下根据条件更改返回值。我如何使用泛型来做到这一点(如果可能的话)?
public Object getABC(SearchVO sVO) throws Exception {
if(sVO.getNo() != null && sVO.getNo() != 0) {
return service.one(sVO); // return not list
} else {
return service.list(sVO); // return list Type
}
}
解决方案
不可能,也不是一个好主意!
X 和“X 列表”不是同一类型,也无法使用泛型来表达。你看,泛型是一个编译时概念。泛型在运行时起的作用不大。因此,潜在的调用者甚至在编译时都不知道会返回什么。
更重要的是:这也不是好的设计实践。调用者应该知道返回了什么,否则您将负担该方法的每个调用者以区分各种可能的结果。
因此,真正的答案是:总是返回一个列表。在一种情况下,使用一个元素,否则使用更多元素!(或者,准确地说:在第二种情况下,你根本不知道有多少元素会回来,0、1、42,谁知道呢)。
推荐阅读
- sapui5 - 在 SAPUI5 中调整对话框大小后如何触发事件?
- kubernetes - 在 Ubuntu 16.04 上执行 kubectl 运行时出现 kubectl 错误
- jmeter - 如何集成 JAVA Request Sampler + Red5-client 库
- ruby-on-rails - 为 Rails 控制器操作显示 jQuery 颜色框
- java - 如何修复编码
- json - 如何遍历 Typescript 中的复杂对象?
- windows - 在桌面加载之前运行登录脚本
- javascript - “Request to ServiceWorker”操作指的是什么?
- xml - 复杂的 XML 解析为 CSV (Python 3.x) (Interactive Broker)
- c# - 无法加载文件或程序集“JavaScript.Net.dll”或其依赖项之一