我们了解到,在Java中,在一个方法中仅包含一个return语句是一种很好的编码实践。但是,这是我的问题;
我有一个抽象的超类Action。有子类,如WalkAction,JumpAction,DoNothingAction等。Actor的类中有一个方法可根据if-else if-else循环中的要求返回操作。如果无法实例化Action类,我应该怎么只有1个return语句。现在该方法看起来像这样;
private Action getAction(Actor actor, Distance distance) {
if (distance < 5) {
return new JumpAction(actor);
}
else if (distance > 5 && distance < 10) {
return new WalkAction(actor);
}
else {
return new DoNothingAction(actor);
}
}
它还显示了一个错误,即没有return语句
答案 0 :(得分:0)
您可以将代码重写为以下单个return
形式:
private Action getAction(Actor actor, Distance distance) {
Action action;
if (distance < 5) {
action = new JumpAction(actor);
}
else if (distance > 5 && distance < 10) {
action = new WalkAction(actor);
}
else {
action = new DoNothingAction(actor);
}
return action;
}
或者:
private Action getAction(Actor actor, Distance distance) {
return
distance < 5 ? new JumpAction(actor) :
distance > 5 && distance < 10 ? new WalkAction(actor) :
new DoNothingAction(actor);
}
答案 1 :(得分:0)
在“ if-else”块中添加“ return null”。 编译器不知道您的运行时信息,整个“ if-else”块可能 根本不匹配,那么您最终会遇到“ no return statement”错误。