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

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)。

08-27 15:13