私は最近、JDK6 のクラス ProcessBuilder がオーバーライドしないことを発見しましたequals()
。理由はありますか?クラスはミュータブルなので、なぜオーバーライドしないのか理解できますhashCode()
。
このコードが機能しないことに驚きました。
ProcessBuilder x = new ProcessBuilder("abc", "def");
ProcessBuilder y = new ProcessBuilder("abc", "def");
if (x.equals(y)) { // they are never equal
// something important here
}
クラス の JDK6 ソース コードを調べましたが、 のオーバーライドが見当たりProcessBuilder
ませんequals()
。
このクラス以外にも、もっと深い理由がある気がします。おそらくこれは意図的なものでしょうか?