Java ArrayList找不到符号

Java ArrayList找不到符号,java,arraylist,cannot-find-symbol,Java,Arraylist,Cannot Find Symbol,我试图创建一个方法,从名为enemyArray的ArrayList中的超类中随机挑选一个敌人 当我试图从超类调用getName方法时,我在底部得到了错误 你们当中有谁能告诉我我在做什么 GameMain.java:51: error: cannot find symbol String name = enemyArray.get(enemy).getName(); ^ symbol: method getN

我试图创建一个方法,从名为enemyArray的ArrayList中的超类中随机挑选一个敌人

当我试图从超类调用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
声明为
对象的列表。缺少泛型参数。调用
enemyArray.get(敌军)
时,结果是一个
对象
,而
对象
没有
getName()
方法,因此会出现错误

public static void enterCastle(ArrayList enemyArray, Random rand)
publicstaticvoid enterCastle(ArrayList-enemyArray,Random)
这将
enemyArray
声明为
对象的列表。缺少泛型参数。调用
enemyArray.get(敌军)
时,结果是一个
对象
,而
对象
没有
getName()
方法,因此会出现错误

public static void enterCastle(ArrayList enemyArray, Random rand)
publicstaticvoid enterCastle(ArrayList-enemyArray,Random)

我们假设您的代码是这样的:

public static void enterCastle(ArrayList<Enemy> enemyArray, Random rand)
只需将enterCastle方法的方法签名更改为:

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

}
class Skeleton extends Enemy{

}
class Demon extends Enemy{

}
publicstaticvoid enterCastle(ArrayList-enemyArray,Random)
错误原因
由于您没有提到泛型类型,Java假定将其作为对象,因此无法找到该方法。

我们假设您的代码如下所示:

public static void enterCastle(ArrayList<Enemy> enemyArray, Random rand)
只需将enterCastle方法的方法签名更改为:

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

}
class Skeleton extends Enemy{

}
class Demon extends Enemy{

}
publicstaticvoid enterCastle(ArrayList-enemyArray,Random)
错误原因
由于您没有提到泛型类型,Java假定将其作为对象,因此无法找到该方法。

Try
publicstaticvoidentercastle(ArrayList-enemyArray,Random-rand){…
Try
publicstaticvoidentercastle(ArrayList-enemyArray,Random-rand){…
第一个代码块的部分对于您的答案和OPs问题的解决方案并不重要。您可以考虑删除它。@Tom,我之所以使用它,是因为如果初学者遇到这个问题,他/她可能会担心正在使用的类以及它们之间的关系。可能它可以帮助某人…等等e“让我们假设”第一个代码块的部分对于您的答案和OPs问题的解决方案并不重要。您可以考虑删除它。@Tom,我使用它只是因为如果初学者遇到这个问题,他/她可能会担心正在使用的类以及它们之间的关系。可能它可以帮助某人。。。