2016-11-16 30 views
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()); 


     } 

错误:ArrayList中无法找到符号

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

你们任何人都可以告诉我我在做什么吗?

+1

尝试使用'public static void enterCastle(ArrayList enemyArray,Random rand){...' – bradimus

回答

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

这声明enemyArrayObject的List。通用参数丢失。当您拨打enemyArray.get(enemy)时,结果是Object,而Object没有getName()方法,因此出现此错误。

public static void enterCastle(ArrayList<Enemy> enemyArray, Random rand) 
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假设t o把它当作Object,因此找不到方法。

+0

整个*“Well让我们假设”*第一个代码块的部分对于您的回答并不真正重要,OP的解决方案问题。你可以考虑删除它。 – Tom

+0

@汤姆,我用它,只是因为如果一个初学者水平的人遇到这个问题,他/她可能担心正在使用的类和它们之间的关系。可能是它可以帮助某人... –

相关问题