java - 方法中只有一个 return 语句,但对象无法实例化。无返回语句错误

标签 java return abstract

我们了解到,在 Java 中,方法中只有一个 return 语句是一种很好的编码习惯。然而,这是我的问题;

我有一个抽象父类(super class),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 语句的错误

最佳答案

您可以将代码重写为以下单个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);
}

关于java - 方法中只有一个 return 语句,但对象无法实例化。无返回语句错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55944912/

相关文章:

java - 使用 Gradle 的 Sonarqube 8 的 Jacoco 代码覆盖率

arrays - 如何从 Golang 中的不同函数将一个数组的元素复制到另一个数组

C# - 强制重写的方法由父级而不是实例调用

oop - 抽象方法和虚方法有什么区别?

java - 基本java重构: Delegate the differences of child classes to parent and merge/remove them

Java:随机化方法递归调用的顺序

java - 在 Java 中使用反斜杠转义空格

java - 二维 ArrayList 不断添加新值

c - 用宏C编程返回

c++ - 由于值返回函数中的错误,程序无法编译。它说未声明的标识符