在Java中的枚举上使用==可以吗,还是需要使用.equals()?在我的测试中,==总是有效的,但我不确定我是否能保证这一点。特别是,枚举上没有.clone()方法,因此我不知道是否可以获取一个枚举,该枚举的.equals()返回的值与=返回的值不同
例如,这可以吗:
公共整数舍入(舍入模式舍入模式){
if(roundingMode==roundingMode.HALF\u UP){
//做点什么
}else if(roundingMode==roundingMode.HALF_偶数){
//做点什么
}
//等
}
或者我需要这样写:
公共整数舍入(舍入模式舍入模式){
if(舍入模式等于(舍入模式向上){
//做点什么
}else if(roundingMode.equals(roundingMode.HALF_偶数)){
//做点什么
}
//等
}
这是Sun发布的Enum.java代码,也是JDK的一部分:
公共抽象类枚举<;E扩展枚举<;E>&燃气轮机;
实施可比<;E>;,可序列化{
// [...]
/**
*如果指定的对象等于此值,则返回true
*枚举常量。
*
*@param other要与此对象进行相等性比较的对象。
*@如果指定的对象等于此值,则返回true
*枚举常量。
*/
公共最终布尔等于(对象其他){
返回this==other;
}
}