mbien commented on code in PR #8407:
URL: https://github.com/apache/netbeans/pull/8407#discussion_r2035291890
##########
platform/openide.dialogs/src/org/openide/NotifyDescriptor.java:
##########
@@ -129,24 +130,50 @@ public class NotifyDescriptor extends Object {
*/
public static final String PROP_INFO_NOTIFICATION = "infoNotification"; //
NOI18N
+ /**
+ * Used to be a <code>new Integer(JOptionPane.FOO_OPTION)</code> instance.
+ *
+ * For compatibility reasons the public Object constants must have distinct
+ * identity, but equals must behave like Integer's equals and compare only
+ * the wrapped int like a Record.
+ */
+ private record ReturnValue(int option) implements Serializable,
Comparable<ReturnValue> {
+
+ @Override
+ public String toString() {
+ return String.valueOf(option);
+ }
+
+ @Override
+ public int hashCode() {
+ return Integer.hashCode(option);
+ }
+
+ @Override
+ public int compareTo(ReturnValue other) {
+ return Integer.compare(option, other.option);
+ }
+
+ }
+
//
// Return values
//
/** Return value if YES is chosen. */
- public static final Object YES_OPTION = new
Integer(JOptionPane.YES_OPTION);
+ public static final Object YES_OPTION = new
ReturnValue(JOptionPane.YES_OPTION);
Review Comment:
it could be a problem but is likely unavoidable. The API promises to return
Object, by comparing it like that, you make the assumption that the object is
an Integer, since the right hand side is a unboxed int:
The way to mitigate it would be to let equals of `ReturnValue` accept
Integer too. But this breaks the equals symmetry rule, since this can't be
implemented for the other way around. Breaking equals symmetry would cause
other problems which are likely worse.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists