Java return 在 for each 循环之外
Java return outside of a for each loop
简单的虚拟问题...我创建了一个方法,它在 for 循环后向我发送一个对象。 for 循环使我的相关对象成为 return。但是Java要求我在方法的底部发送一个return。问题是......在我的方法之外我没有任何东西可以return。有办法告诉我只 return 一个错误吗?
这里是有问题的代码......非常简单!
public Stock getStockInfos(String selectedStock) {
for(Stock temp:registreStock){
if((temp.getSymbol()).equals(selectedStock)){
return temp;
}
}
}
通常,我需要在末尾添加一个 return 语句...我找到的一个解决方案是在底部制作一份 temp 和 return 这个副本。如果这是正确的解决方案,有一个简单的方法 copy/clone this object?
您必须问问自己是否可能找不到给定代码的股票,以及在这种情况下应该发生什么。一种选择是 return null 或引发异常。
public Stock getStockInfos(String selectedStock) {
for(Stock temp:registreStock){
if((temp.getSymbol()).equals(selectedStock)){
return temp;
}
}
return null;
}
试试这个。所有执行路径都需要一个 return 值。
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 ;
}
当然,调用此方法的代码必须测试可能 returned 的空值。
我终于做到了,而且效果很好
public Stock getStockInfos(String selectedStock) {
Stock stockSelected = null;
for(Stock temp:registreStock){
if((temp.getSymbol()).equals(selectedStock)){
stockSelected = temp;
}
}
return stockSelected;
}
但是...是的...如果找不到对象,我需要思考一下!你是对的!
谢谢我再想想!!! :P
如果 registreStock
是集合,您可以使用流和 Optional
而不是可为 null 的值。像这样:
Optional<Stock> result = registreStock
.stream()
.filter((stock) -> stock.getSymbol().equals(selectedStock))
.findFirst();
返回 null
是不好的做法。尽可能使用 Optional
。
简单的虚拟问题...我创建了一个方法,它在 for 循环后向我发送一个对象。 for 循环使我的相关对象成为 return。但是Java要求我在方法的底部发送一个return。问题是......在我的方法之外我没有任何东西可以return。有办法告诉我只 return 一个错误吗?
这里是有问题的代码......非常简单!
public Stock getStockInfos(String selectedStock) {
for(Stock temp:registreStock){
if((temp.getSymbol()).equals(selectedStock)){
return temp;
}
}
}
通常,我需要在末尾添加一个 return 语句...我找到的一个解决方案是在底部制作一份 temp 和 return 这个副本。如果这是正确的解决方案,有一个简单的方法 copy/clone this object?
您必须问问自己是否可能找不到给定代码的股票,以及在这种情况下应该发生什么。一种选择是 return null 或引发异常。
public Stock getStockInfos(String selectedStock) {
for(Stock temp:registreStock){
if((temp.getSymbol()).equals(selectedStock)){
return temp;
}
}
return null;
}
试试这个。所有执行路径都需要一个 return 值。
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 ;
}
当然,调用此方法的代码必须测试可能 returned 的空值。
我终于做到了,而且效果很好
public Stock getStockInfos(String selectedStock) {
Stock stockSelected = null;
for(Stock temp:registreStock){
if((temp.getSymbol()).equals(selectedStock)){
stockSelected = temp;
}
}
return stockSelected;
}
但是...是的...如果找不到对象,我需要思考一下!你是对的!
谢谢我再想想!!! :P
如果 registreStock
是集合,您可以使用流和 Optional
而不是可为 null 的值。像这样:
Optional<Stock> result = registreStock
.stream()
.filter((stock) -> stock.getSymbol().equals(selectedStock))
.findFirst();
返回 null
是不好的做法。尽可能使用 Optional
。