继续query,我想比较枚举常量。
我了解到:在Java 5.0中,enum关键字是作为一种特殊类型引入的,它始终扩展java.lang.Enum
。此类已有equals()
方法,用于比较引用(this == obj
)。
enum TicTacToe{
X, O, NULL;
@Override
public String toString(){
switch(this){
case X:
return "X";
case O:
return "O";
default:
return "NULL";
}
}
}
class Grid{
TicTacToe[][] twoDimArray = new TicTacToe[3][3];
Grid(){
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
twoDimArray[i][j] = TicTacToe.NULL;
}
}
}
int chooseMove(boolean side){
if(this.gameDone()){
}else{
}
return 0; // give solution
}
boolean gameDone(){
// Compare the elements in 2D array
return true; // give solution
}
void printElements(){
for(int i = 0; i < 3; i++){
System.out.println(" " + twoDimArray[i][0] + " | " + twoDimArray[i][1] + " | " + twoDimArray[i][2]);
if(i != 2)
System.out.println("------------------");
}
}
}
在我比较上面gameDone()
方法中的值之前,我想了解一下,我们究竟在做什么,当我们说,twoDimArray[i][j] = TicTacToe.NULL;
我们是否正在创建一个枚举类型的对象并分配给每个数组中的元素?
如何比较阵列中的这些元素?因为equals()
方法需要引用类型。
答案 0 :(得分:2)
要比较枚举类型,您只需使用yourVariable == SomeEnumType
。
例如:
if (enumType == TicTacToe.NULL) {
// Enum type is NULL!
}
您还可以实现新的equals
方法,覆盖超类Enum
的equals()。如果您不这样做,那么variable.equals(EnumType)
与variable == EnumType
相同。