1. ホーム
  2. java

[解決済み] Javaでenumに==を使用しても良いですか?

2022-05-16 06:10:17

質問

を使用しても良いのでしょうか? == を使ってもいいのでしょうか?それとも、Java の enum で .equals() ? 私のテストでは == は常に動作しますが、それが保証されているかどうかはわかりません。 特に .clone() メソッドがないので、enum に対して .equals() とは異なる値を返します。 == .

例えば、こんな感じでOKでしょうか。

public int round(RoundingMode roundingMode) {
  if(roundingMode == RoundingMode.HALF_UP) {
    //do something
  } else if (roundingMode == RoundingMode.HALF_EVEN) {
    //do something
  }
  //etc
}

それともこのように書かないといけないのでしょうか。

public int round(RoundingMode roundingMode) {
  if(roundingMode.equals(RoundingMode.HALF_UP)) {
    //do something
  } else if (roundingMode.equals(RoundingMode.HALF_EVEN)) {
    //do something
  }
  //etc
}

どのように解決するのですか?

私の2セントだけ。以下は、Sun によって公開され、JDK の一部である Enum.java のコードです。

public abstract class Enum<E extends Enum<E>>
    implements Comparable<E>, Serializable {

    // [...]

    /**
     * Returns true if the specified object is equal to this
     * enum constant.
     *
     * @param other the object to be compared for equality with this object.
     * @return  true if the specified object is equal to this
     *          enum constant.
     */
    public final boolean equals(Object other) { 
        return this==other;
    }


}