在Java中的枚举上使用==可以吗?

在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&gt&燃气轮机;
实施可比<E>,可序列化{
// [...]
/**
*如果指定的对象等于此值,则返回true
*枚举常量。
*
*@param other要与此对象进行相等性比较的对象。
*@如果指定的对象等于此值,则返回true
*枚举常量。
*/
公共最终布尔等于(对象其他){
返回this==other;
}
}

发表评论