ArrayList找不到符号

时间:2016-11-16 13:47:42

标签: java arraylist cannot-find-symbol

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方法时,我在底部得到错误。

你们中的任何一位职业经理都可以告诉我我在做什么吗?

2 个答案:

答案 0 :(得分:3)

public static void enterCastle(ArrayList enemyArray, Random rand)

这会将enemyArray声明为Object的列表。缺少通用参数。当您致电enemyArray.get(enemy)时,结果为ObjectObject没有getName()方法,因此会出错。

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

答案 1 :(得分: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)

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