我有Mappa类,mappaName作为一个属性(从enum名称中选择)和getMappaName方法返回它,当我运行一个测试来比较从名称中选择的mappaName之一时,我得到预期的FERMI,但为:null
public class Mappa {
private Name mappaName;
private final Settore [][] settore;
private int Matrice [][];
private static final int X=23;
private static final int Y=14;
public Mappa (Name mappaName){//If i run new Mappa (Name.FERMI)
//isn't supposed to set mappaName to Name.FERMI?
settore = new Settore[X][Y];
for (int i=0; i < X; i++){
for (int j=0; j<Y; j++) {
settore[i][j] = new Settore (i,j);
}
}
Matrice = new int[23][14];
if(mappaName==Name.FERMI){
settore[10][8]=new Alieni(10,8);
settore[10][9]=new Umani(10,9);
}
if(mappaName==Name.GALILEI||mappaName==Name.GALVANI){
settore[10][5]=new Alieni(10,5);
settore[10][7]=new Umani(10,7);
}
}
public Name getMappaName() {
return mappaName;
}
}
public enum Name {
FERMI, GALILEI, GALVANI
}
@Test
public void testMappaNome(){
Mappa mappa = new Mappa(Name.FERMI);
assertEquals(Name.FERMI, mappa.getMappaName());
}
您忘记将局部变量 mappaName赋值给字段 mappaName。在构造函数开头添加:
this.mappaName = mappaName;
在构造函数中,仍然需要将参数mappaName设置为类字段mappaName。像下图:
public Mappa (Name mappaName){//If i run new Mappa (Name.FERMI)
//isn't supposed to set mappaName to Name.FERMI?
this.mappName = mappaName; // assign the value to your class entry.