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方法时,我在底部得到错误。
你们中的任何一位职业经理都可以告诉我我在做什么吗?
答案 0 :(得分:3)
public static void enterCastle(ArrayList enemyArray, Random rand)
这会将enemyArray
声明为Object
的列表。缺少通用参数。当您致电enemyArray.get(enemy)
时,结果为Object
,Object
没有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,因此无法找到该方法。