Java:增强的for循环无法将对象转换为类错误

时间:2015-01-11 06:42:51

标签: java

我需要在屏幕上为我的骰子绘制重启按钮,但是当使用for循环增强时,

 public class DiceGameModel {
--------------------------------
-------------------------------
   public void reset() {
        this.playerNumber = 0;
       for(PlayerModel player : players)  {
           player.reset();
        }
    }
-------------------------
----------------------------
}

netbean返回的对象无法转换为playermodel,是一个包含reset方法的类。

package dicemodel;    

public class PlayerModel {    
----------------------    
--------------------    
 public void reset() {    
        this.numberOfRolls = 0;    
        this.score = 0;    
        this.tempScore = 0;    
        this.dieRoll = 0;    
    }    
--------------------------    
----------------------------    
}    

2 个答案:

答案 0 :(得分:1)

更改

private List players;

private List<PlayerModel> players;

并更改

this.players = new ArrayList();

this.players = new ArrayList<PlayerModel>();

ListArrayList是通用类。如果不在尖括号中给出类型信息,则不应使用它们。

答案 1 :(得分:0)

如果playersArrayList<PlayerModel> players = new ArrayList<>();

然后你的增强for循环应如下所示:

for(PlayerModel player:players){
    player.reset();
}

使用标准for循环,它看起来像:

for(int i = 0; i < players.size(); i++){
    players.get(i).reset();
    //this can be written in two lines like this:
    //PlayerModel tempModel = players.get(i);
    //tempModel.reset();
}

在增强的for循环中,每次迭代都会返回一个可以直接使用的Object引用。在标准for循环中,您可以使用.get()方法迭代索引值,您可以使用它来访问ArrayList中的不同对象...