Java 在 for each 循环之外返回

时间:2021-05-25 20:05:15

标签: java object return return-type

简单的虚拟问题……我创建了一个方法,它在 for 循环后向我发送一个对象。 for 循环返回我有问题的对象。但是Java要求我在方法的底部发送一个返回值。问题是......在我的方法之外我没有任何东西可以返回。有没有办法告诉我只返回一个错误?

这里是有问题的代码......非常简单!

public Stock getStockInfos(String selectedStock) {
    for(Stock temp:registreStock){
        if((temp.getSymbol()).equals(selectedStock)){
            return temp;
        }
    }
}

通常,我需要在最后添加一个 return 语句......我找到的一个解决方案是制作 temp 的副本并在底部返回此副本。如果这是正确的解决方案,是否有一种简单的方法可以复制/克隆此对象?

4 个答案:

答案 0 :(得分:1)

您必须问问自己,如果找不到指定代码的股票,是否会发生这种情况,以及在这种情况下会发生什么。一种选择是返回 null 或引发异常。

public Stock getStockInfos(String selectedStock) {
    for(Stock temp:registreStock){
        if((temp.getSymbol()).equals(selectedStock)){
            return temp;
        }
    }

    return null;
}

答案 1 :(得分:1)

试试这个。您需要所有执行路径的返回值。

   public Stock getStockInfos(String selectedStock) {
   
     for(Stock temp:registreStock){
          if((temp.getSymbol()).equals(selectedStock)){
            return temp;
          }
      }

    // This line of code will not be reached assuming return temp is executed - 
    // but will take care of the message
   return null ;
   }

当然,调用此方法的代码必须测试可能返回的 null。

答案 2 :(得分:0)

我终于做到了,它正在工作

PS> ([string[]] ('a', 'b')).GetType().Name
String[] # OK: (...) preserved the array as-is

但是...是的...如果找不到对象,我需要提醒一下!你说得对!

谢谢我再想想!!! :P

答案 3 :(得分:0)

如果 registreStock 是集合,您可以使用流和 Optional 代替可空值。像这样:

Optional<Stock> result = registreStock
    .stream()
    .filter((stock) -> stock.getSymbol().equals(selectedStock))
    .findFirst();

返回 null 是不好的做法。如果可能,请使用 Optional