有没有一种方法可以在不满足某个条件的情况下不返回任何东西(甚至不返回null),而在满足该条件的情况下返回方法类型的一些东西(例如,如果方法是“int”,则返回“int”)?
现在我已经看到了注解,我已经读过关于Optional类的内容,但是我不能理解它。那么如果我有一个类似于ArrayList的方法,我是怎么做的呢?
static ArrayList<String> method() {
if (true) {
return ArrayList; }
else {
? } //(equivalent of return nothing, not even null)
它应该是这样的,但是你能帮助我解释一下确切的语法吗?
static Optional method() {
if (true) {
return ArrayList<String>; }
else {
Optional.empty() } //(equivalent of return nothing, not even null)
好的,下面有一个注解,让我发布我的递归函数。这里我想要的是在第一个if语句中,有一个print和一个return语句。但是在函数的末尾有一个必要的return null,因此函数返回null。我希望函数返回它打印的内容,即索引,这样我就可以在其他地方使用它作为输入。
static ArrayList<String> connectionFinder(String linInit, String linFin, ArrayList<String> indices, ArrayList<ArrayList<String>> linArray) {
if (linInit.equals(linFin)) { //returns the indices list if linInit reaches linFin
System.out.println(indices);
return indices;
}
for (int i = 0; i < linArray.size(); i++) {
if (linArray.get(i).contains(linInit) && !indices.contains(i)) { //checks which stations are exchange stations for linInit, and checks the index to prevent infinite recursion
for (int j = 1; j < linArray.get(i).size(); j++) {
if (!linArray.get(i).get(j).equals(linInit)) { //j starts from 1 so as to avoid the station name, and checks if the linInit is different to prevent infinite recursion
connectionFinder(linArray.get(i).get(j), linFin, add(indices, i), linArray); //changes the linInit, and adds the index ( add(ArrayList,value) is a custom method that returns the ArrayList instead of a boolean -ArrayList.add(value) returns a boolean-)
}
}
}
}
indices.remove(indices.size()-1);
return null;
}
2条答案
按热度按时间xpszyzbs1#
你不能从一个非空的方法中返回任何东西。在大多数情况下,如果返回一个值没有意义,最好的做法是抛出一个异常。
例如:
6kkfgxo02#
我会写一个单独的函数:
你的函数,现在是一个void: