我想要递归构造函数调用 - 如何解决错误?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想要递归构造函数调用 - 如何解决错误?相关的知识,希望对你有一定的参考价值。

我正在为一个正在进行的课程编写一个有趣的作业,而且它的所有关于多态性和编码对象等...基本上,我们被要求编写一个与其他学生生物作斗争的“生物”对象。

当我的生物对象上调用某个方法时,我怎么能这样做呢(丢失(),当我的生物失去战斗时)它再次调用自己的构造函数以使它“重生”?

这是我的代码。

import java.awt.*;
import java.util.*;

public class Husky extends Critter {
   //fields
   private int x = getWidth();
   private int y = getHeight();
   private Random r = new Random();
   private Direction[] directions = {Direction.NORTH, Direction.SOUTH, Direction.EAST, Direction.WEST};

   public Husky() {}

   public boolean eat() {
      return true;
   }

   public Attack fight(String opponent) {
      if (opponent.equals("%")) {
         return Attack.ROAR;
      } else if (opponent.equals("^") || opponent.equals(">") || opponent.equals("V")
     || opponent.equals("<") || opponent.equals("0")) {

     return Attack.SCRATCH;
      } else {
         return Attack.ROAR;
      } 
   }


   public Direction getMove() {
      int z = r.nextInt(4);
      return directions[z];
   }  

   public Color getColor() {
      return Color.CYAN;
   }

   public String toString() {
      return "∏";
   }

   public void lose() {
      this();
   }
}

基本上,我希望我的小动物不朽。可能吗?

答案

你可以失去创造一个新的赫斯基

public void lose() { new Husky(); }

或者返回一个:

public Critter lose() {  return new Husky();  }

以上是关于我想要递归构造函数调用 - 如何解决错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何在龙目岛调用超级构造函数

如何在自定义PyYAML构造函数中处理递归?

我在 laravel 中的递归函数不调用自己

Java编译错误 - 没有合适的构造函数

如何缓存片段视图

当我添加构造函数来调用服务类时,Laravel Livewire 错误