我有一些我想弄明白的东西。所以当我运行这个名为:
的方法时public String showList()
我希望它返回字符串,但之后调用一个名为displayMenu的方法,因此在调用showList时它会自动转到下一个方法。这可能吗?
showList方法:(我想调用另一个名为public void displayMenu()的方法)
public String showList()
{
sortList();
int i = 0;
String retStr = "The nodes in the list are:\n";
LinkedListNode current = front;
while(current != null){
i++;
retStr += "Node " + i + " is: " + current.getData() + "\n";
current = current.getNext();
}
return retStr;
//Would like to call the displayMenu() here, but I can't after the string returns it is unreachable.
}
答案 0 :(得分:2)
注意:我不建议这样做。我绝对建议您在某些控制器类中一个接一个地调用这些方法。现在已经完成了:
使用Thread
这是一个相当复杂的方法,尚未提及。我一般不会这样做,但值得注意的是,它可以做到。请注意,这是处理线程(请参阅tutorial),因此我不保证该方法将在返回后进行评估。
这样做的一种方法如下:
在与您的方法相同的类中包含如下内容:
class doSomething implements Runnable{
public void run(){
displayMenu();
}
}
然后,在您的showList
方法中,执行以下操作:
public String showList(){
...//some code
(new Thread(new doSomething())).start(); //more efficient: create a
//variable to hold the thread.
return retStr;
}
示例代码:
public class test{
public static void main(String[]a){
System.out.print(foo());
}
public static String foo(){
(new Thread(new fooBar())).start();
return "foo";
}
public static void bar(){
System.out.println("bar");
}
static class fooBar implements Runnable{
public void run(){
bar();
}
}
}
打印:
foobar的
答案 1 :(得分:1)
你不能在return语句后写任何东西。 Return语句应该是方法的最后一行。
答案 2 :(得分:1)
修改调用showList()
的方法,如下所示。我们称此方法为doSomething()
doSomething(){
String output=showList(..); // This is your existing method call
displayMenu(); // call displaymenu() once showlist() execution is over
}
答案 3 :(得分:1)
关于return语句的问题是,当你使用它时,你基本上就是说“我想立即返回这个值”。不在5行,不是在另一个函数调用之后。 立即强>
因此,在返回值后想要在方法中做某事是没有意义的;你已经基本上表明没有什么可做的;你已经完成并准备回到调用方法。
@DarkKnight和@ManZzup已经提出了替代方案;您需要重新构建代码,以便不需要这样的构造。