RFR: 8289389: Fix warnings: type should also implement hashCode() since it overrides Object.equals() [v3]
Nir Lisker
nlisker at openjdk.org
Tue Jul 19 04:32:10 UTC 2022
On Mon, 11 Jul 2022 22:44:41 GMT, Andy Goryachev <duke at openjdk.org> wrote:
>> - added missing hashCode() methods
>
> Andy Goryachev has updated the pull request incrementally with one additional commit since the last revision:
>
> 8289389: minimize the impact of collision
Except for one case, looks good. I think that nearly all of the `equals` implementations are not the best (or just wrong), but it's outside the scope of the PR.
modules/javafx.controls/src/test/java/test/javafx/scene/control/ListViewTest.java line 1715:
> 1713: @Override public boolean equals(Object obj) {
> 1714: if (obj == null) return false;
> 1715: return id == ((RT22599_DataType)obj).id;
I note that the `equals` method here is wrong. The `hashCode` implementation is fine.
modules/javafx.controls/src/test/java/test/javafx/scene/control/TableViewTest.java line 5087:
> 5085: @Override public boolean equals(Object obj) {
> 5086: if (obj == null) return false;
> 5087: return id == ((RT22599_DataType)obj).id;
Same as `ListViewTest`.
modules/javafx.controls/src/test/java/test/javafx/scene/control/TreeTableViewTest.java line 5743:
> 5741: @Override public boolean equals(Object obj) {
> 5742: if (obj == null) return false;
> 5743: return id == ((RT22599_DataType)obj).id;
Same as `ListViewTest`.
modules/javafx.controls/src/test/java/test/javafx/scene/control/TreeViewTest.java line 3077:
> 3075: @Override public boolean equals(Object obj) {
> 3076: if (obj == null) return false;
> 3077: return id == ((RT22599_DataType)obj).id;
Same as `ListViewTest`.
modules/javafx.fxml/src/main/java/javafx/fxml/FXMLLoader.java line 2322:
> 2320: }
> 2321: return false;
> 2322: }
Same as `ListViewTest`.
modules/javafx.media/src/main/java/com/sun/media/jfxmediaimpl/NativeMediaAudioClipPlayer.java line 457:
> 455: public int hashCode() {
> 456: return sourceClip.hashCode();
> 457: }
Why are you ignoring the significant fields? `equals` compares `priority`, `loopCount`, `volume`, `balance`, `rate` and `pan` in addition.
modules/javafx.media/src/main/java/com/sun/media/jfxmediaimpl/NativeMediaAudioClipPlayer.java line 531:
> 529: return 0;
> 530: }
> 531: return player.hashCode();
This is fine, but can also be a ternary `return player == null ? 0 : player.hashCode();`
-------------
Changes requested by nlisker (Reviewer).
PR: https://git.openjdk.org/jfx/pull/821
More information about the openjfx-dev
mailing list