2014-10-30 119 views
0

我正在關注YouTube上的教程,製作Java遊戲。爲什麼這個列表有錯誤?

而我在跟蹤它時遇到了這個錯誤,我不知道爲什麼。

The type List is not generic; it cannot be parameterized with arguments <Enemy> 

這裏的名單:

private List<Enemy> enemies = new ArrayList<Enemy>(); 

我已經進口java.util.*;java.awt.*;的清單,從理論上說,工作。

這裏是我的敵人類

import java.awt.*; 

public class Enemy extends Entity { 

    private Rectangle hitbox; 
    private int movementX, movementY; 
    private boolean dead = false; 
    private Main instance; 

    public Enemy(Main instance, int x, int y) { 
     super(x, y); 
     this.instance = instance; 
     hitbox = new Rectangle(x,y,32,32); 

     movementX = 0; 
     movementY = 1; 
    } 

    private void move(){ 
     if(instance.getStage().isCollided(hitbox)){ 
      movementY = 0; 
      dead = true; 
     } 
     hitbox.x += movementX; 
     hitbox.y += movementY; 
    } 

    public boolean isDead() { return dead; } 


    public void draw(Graphics g){ 
     move(); 
     g.setColor(Color.RED); 
     g.fillRect(hitbox.x, hitbox.y, hitbox.width, hitbox.height); 
    } 

} 
+0

錯誤導入對應的代碼,請嘗試使用'私有的java.util.List enemies' – 2014-10-30 21:10:36

回答

4

你只進口java.awt.*,具有不同的非通用List。您必須完全符合java.util.List的參考資格,因爲導入了java.awt.List

private java.util.List<Enemy> enemies = new ArrayList<Enemy>(); 

確保已java.util.*進口這麼ArrayList也迎刃而解。

+0

是啊,三江源非常多:)不知道。將在9分鐘內打勾 – 2014-10-30 21:14:43

+0

@SebastianA這就是不推薦使用通配符導入的確切原因。 – chrylis 2014-10-30 21:25:50

+0

@chrylis我現在看到了!我只是認爲這是一種導入東西的更快方式......似乎不是:( – 2014-10-30 21:33:02

0

通過導入java.awt.*,您還在導入java.awt.List。您可能想使用java.util.List而不是java.awt.List

java.awt有獨立import報表您從java.awt需要的所有類將替代進口的通配符,並導入java.util.List

0

問題是編譯器試圖把這個List對象當作java.awt.List而不是java.util.List。最有可能替換

private java.util.List<Enemy> enemies = new ArrayList<Enemy>();