我想根据条件更改返回值,而不使用该对象。我如何使用泛型(如果可能)做到这一点?
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)。