【问题标题】:Use Generic when return values vary depending on the conditions当返回值因条件而异时使用 Generic
【发布时间】:2019-12-25 05:41:27
【问题描述】:

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

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
    }
}

【问题讨论】:

  • 调用者如何在编译时知道运行时的数据是什么?想想吧。
  • @GhostCat :哦,对不起,我忘了。 :)
  • @GhostCat :我认为他是。 ;)

标签: java spring generics return


【解决方案1】:

不可能,也不是一个好主意!

X 和“X 列表”不是同一类型,也无法使用泛型来表达。你看,泛型是一个编译时概念。泛型在运行时起的作用不大。因此,潜在的调用者甚至在编译时都不知道会返回什么。

更重要的是:这也不是好的设计实践。调用者应该知道返回的内容,否则您将负担该方法的每个调用者以区分各种可能的结果。

因此,真正的答案是:总是返回一个列表。在一种情况下,使用一个元素,否则使用更多元素! (或者,准确地说:在第二种情况下,你根本不知道有多少元素会回来,0、1、42,谁知道呢)。

【讨论】:

  • 总是返回列表是完美的解决方案。对此投赞成票。
猜你喜欢
  • 1970-01-01
  • 2014-06-17
  • 2018-01-19
  • 1970-01-01
  • 2014-09-21
  • 1970-01-01
  • 2012-09-23
  • 2022-01-02
  • 2021-05-03
相关资源
最近更新 更多