方法中的单个return语句,但是对象无法实例化。没有返回语句错误

时间:2019-05-02 02:21:58

标签: java return abstract

我们了解到,在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语句

2 个答案:

答案 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”错误。