Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
(CCing as many people from the original discussion as I could find: svatoun matthies jlahoda)
Given that Netbeans now requires JDK 7, consider having the code generator delegate to
Objects.hashCode(Object) and Objects.hash(Object...) as they result in cleaner code than what is currently being generated.
As for equals(), the implementation generated by Netbeans violates the Java specification of java.lang.Object and should be fixed right away. You can read a more detailed discussion at https://netbeans.org/bugzilla/show_bug.cgi?id=156994 [1] but essentially we agreed to fix this with a flag in the Options dialog to let users decide which approach they prefer.
[1] In my last post I suggested:
- Making "instanceof" the default.
- Warning if a class uses "instanceof" and subclasses override equals/hashCode.
- Allowing users to configure whether they prefer instanceof or getClass()-based implementations of equals/hashcode on a project-level.
- Warning if a class uses "getClass()" and has any subclasses.
- Warnings should appear on the subclasses, not the parent class.