1
import java.util.*;

public class GameMain{

   public static void main(String [] args){
      Scanner scan = new Scanner(System.in);
      Random rand = new Random();
      Enemy e1 = new Knight();
      Enemy e2 = new Skeleton();
      Enemy e3 = new Demon();
      ArrayList<Enemy> enemyArray = new ArrayList<Enemy>(); 
      enemyArray.add(e1);
      enemyArray.add(e2);
      enemyArray.add(e3);
   }



  public static void enterCastle(ArrayList enemyArray, Random rand){   

       int enemy = rand.nextInt(2);
       String name = enemyArray.get(enemy).getName();
       System.out.println();
       System.out.println("You enter the castle");
       System.out.println("Darkness are closing on you!");
       System.out.println("You hear something from behind you");
       System.out.println("you look behind you and see a "+enemyArray.get(enemy).getName());


       }

错误:

GameMain.java:51: error: cannot find symbol
   String name = enemyArray.get(enemy).getName();
                                      ^
  symbol:   method getName()
  location: class Object
GameMain.java:56: error: cannot find symbol
   System.out.println("you look behind you and see a "+enemyArray.get(enemy).getName());
                                                                            ^
  symbol:   method getName()
  location: class Object
2 errors

我正在尝试制作一种方法,该方法可以从名为enemyArray 的ArrayList 中的超类中选择一个随机敌人。

当我尝试从超类调用 getName 方法时,我在底部得到错误。

你们中的任何一个专业人士都可以告诉我我在做什么吗?

4

2 回答 2

3
public static void enterCastle(ArrayList enemyArray, Random rand)

这声明enemyArrayObjects 的列表。缺少通用参数。当您调用enemyArray.get(enemy)时,结果是Object,并且Object没有getName()方法,因此出现错误。

public static void enterCastle(ArrayList<Enemy> enemyArray, Random rand)
于 2016-11-16T13:49:40.317 回答
2

好吧,假设您的代码是这样的:

class Enemy{
    public String getName(){
    // bla bla
    return "hey";
    }
}
class Knight extends Enemy{

}
class Skeleton extends Enemy{

}
class Demon extends Enemy{

}

只需将 enterCastle 方法的方法签名更改为:

public static void enterCastle(ArrayList<Enemy> enemyArray, Random rand)

错误原因:由于您没有提到Generic 类型,Java 假定将其作为 Object ,因此找不到该方法。

于 2016-11-16T14:05:27.067 回答