简单的虚拟问题……我创建了一个方法,它在 for 循环后向我发送一个对象。 for 循环返回我有问题的对象。但是Java要求我在方法的底部发送一个返回值。问题是......在我的方法之外我没有任何东西可以返回。有没有办法告诉我只返回一个错误?
这里是有问题的代码......非常简单!
public Stock getStockInfos(String selectedStock) {
for(Stock temp:registreStock){
if((temp.getSymbol()).equals(selectedStock)){
return temp;
}
}
}
通常,我需要在最后添加一个 return 语句......我找到的一个解决方案是制作 temp 的副本并在底部返回此副本。如果这是正确的解决方案,是否有一种简单的方法可以复制/克隆此对象?
答案 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
。