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


     } 

오류를 찾을 수 없습니다 : 나는 enemyArray라는 ArrayList에있는 슈퍼 클래스의 임의의 적을 선택하는 방법을 만들려고 노력하고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 

.

수퍼 클래스에서 getName 메서드를 호출하려고하면 아래쪽에 오류가 발생합니다.

당신 중 누구라도 내가 무엇을 worrng하고 있는지 말해 줄 수 있습니까?

+1

시도해보십시오. public static void enterCastle (ArrayList enemyArray, Random rand) {... ' – bradimus

답변

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

Object의 목록으로 enemyArray을 선언합니다. 제네릭 매개 변수가 없습니다. enemyArray.get(enemy)을 호출하면 결과는 Object이고 Object에는 getName() 메서드가 없으므로 오류가 발생합니다.

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

그럼이 코드는 다음과 같이 가정 할 수 있습니다 : 오류에 대한

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

이유 :

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

} 
class Skeleton extends Enemy{ 

} 
class Demon extends Enemy{ 

} 

는 것처럼 enterCastle 방법의 당신의 방법 서명을 변경 로 일반 유형을 언급하지 않는다면 Java는 t를 가정합니다. o Object로 가져와 메서드를 찾을 수 없습니다.

+0

첫 번째 코드 블록을 포함하는 * 전체 부분이 사용자의 대답과 OP에 대한 솔루션에는별로 중요하지 않습니다. 발행물. 그것을 제거하는 것에 대해 생각할 수 있습니다. – Tom

+0

@Tom, 나는 초급 수준의 사람이이 질문을 건너 오면, 사용중인 클래스와 그들 사이의 관계에 대해 걱정할 수도 있기 때문에 나는 그것을 사용했다. 누군가를 도울 수 있을지 ... –