2016-11-16 3 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 

Я пытаюсь сделать метод, выбрать случайный противник из суперкласса, который находится в ArrayList под названием enemyArray.

Когда я пытаюсь вызвать метод getName из суперкласса, я получаю ошибку в нижней части.

Может ли кто-нибудь из вас узнать, что я делаю, беспокоиться?

+1

Попробуйте 'public static void enterCastle (ArrayList enemyArray, Random rand) {...' – bradimus

ответ

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) 
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 взять его как объект и, следовательно, не может найти метод.

+0

Вся * «Ну давайте считать» * часть с первым блоком кода не очень важна для вашего ответа и решения для OP вопрос. Вы можете подумать об этом. – Tom

+0

@Tom, я использовал его только потому, что, если парень-начинающий сталкивается с этим вопросом, он может беспокоиться о используемых классах и отношениях между ними. Может быть, это может помочь кому-то ... –

Смежные вопросы