首先,我有两个相关的类:Enemies.java和Sarz.java。敌人扩大了萨尔茨。

public class Enemies extends Sarz {


它有一个数组,里面有一些敌人。

enemies[0] = new Enemies("Dragon", 100, 100, "Cave");
enemies[1] = new Enemies("Saturn Fly Trap", 10, 15, "Forest");


在Sarz中,我制作了一个Sarz类型的数组,并在其中存储了一些随机生成的敌人。

Enemies e = new Enemies();
e.generateEnemies();

Sarz[][] map = new Sarz[5][5];

while (count < 4){
  row = r.nextInt(5);
  column = r.nextInt(5);
  if (map[row][column] == null){
    map[row][column] = e.enemies[r.nextInt(8)];
    System.out.println(map[row][column].getName() + " at " + row + "," + column);
    count++;
  }
}


我的问题是,当我使用该println语句进行测试时,它们已经正确存储在随机位置中,但是我似乎无法获得任何东西来将敌人的名字还给我。我已经尝试使用Arrays.toString()和Enemies类的getter和setter方法,但是它们不能用于map数组,因为它是Sarz类型。我希望能够使用map [row] [column] .getEnemyName()或至少返回1,0而不是Enemies @ 14ae5a5的字符串。

最佳答案

由于Enemies扩展了Sarz,因此可以将Sarz强制转换为Enemies的对象(如果它是有效对象)。因此,您可以执行以下操作:

System.out.println(((Enemies)map[row][column]).getEnemyName() + " at " + row + "," + column);

08-04 00:42