我正在研究在回溯场景中将递归调用的函数。该函数正常工作并返回工作列表,或者该函数失败并返回false
。在python中,我可以这样写:
def myfunc(input):
# logic and logic
if fails:
return False
return alist
在Java中,函数不能返回List或False。我认为我可以使用{?
来解决问题,仅出于论证的目的,我知道我要返回的内容):
public List<?> myfunc(someType input){
// logic and logic
return res
// empty or special result instead of False.
}
但是还有更优雅的方法吗?也许try catch
?我在Java中很新,在这种情况下想知道标准。谢谢。
答案 0 :(得分:2)
有几种选择:
public Optional<List> myfunc(someType input){
// logic and logic
if (fail) return Optional.empty();
else return Optional.of(res);
}
null
public List myfunc(someType input){
// logic and logic
if (fail) return null;
else return res;
}
public List myfunc(someType input){
// logic and logic
if (fail) throw new RuntimeException("What an interesting case!");
else return res;
}
PS。我建议选择“可选”或“例外”。
答案 1 :(得分:1)
如果失败,您可以返回一个空列表。
public static ArrayList<String> GetList()
{
return null;
}