Rohit Jain 的回答是正确的,只是我想添加扩展示例。它使用强制转换进行初始化。
定义:
public enum CellState {
MINE_EMPTY,MINE_NEAR_1,MINE_NEAR_2,MINE_NEAR_3,MINE_NEAR_4,MINE_NEAR_5,MINE_NEAR_6,
MINE_NEAR_7, MINE_NEAR_8,MINE,CLICK_OPEN, CLICK_MARK;
public static EnumSet<CellState> ALL_OPTS = EnumSet.allOf(CellState.class);
public static EnumSet<CellState> NOT_MINE = EnumSet.of(MINE_EMPTY,MINE_NEAR_1,MINE_NEAR_2,MINE_NEAR_3,MINE_NEAR_4,MINE_NEAR_5,MINE_NEAR_6,
MINE_NEAR_7, MINE_NEAR_8);
}
}
宣言:
public EnumSet<CellState>[][] minefield; // 2-dimensional array
初始化(需要强制转换):
minefield = (EnumSet<CellState>[][]) new EnumSet<?>[width][height];
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
minefield[x][y] = EnumSet.allOf(CellState.class);
}
}
用法:
if (!minefield[x][y].contains(CellState.MINE)) {
minefield[x][y].add(minesNear(x, y));
}