@@ -125,79 +125,77 @@ public static boolean equals(Object x, Object y) {
125
125
* in any case, we dispatch to it as soon as we spot one on either side.
126
126
*/
127
127
public static boolean equals2 (Object x , Object y ) {
128
+ if (x instanceof java .lang .Number )
129
+ return equalsNumObject ((java .lang .Number )x , y );
130
+ if (x instanceof java .lang .Character )
131
+ return equalsCharObject ((java .lang .Character )x , y );
132
+ if (y instanceof scala .math .ScalaNumber )
133
+ return y .equals (x );
134
+
128
135
if (x == null )
129
136
return y == null ;
137
+ return x .equals (y );
138
+ }
130
139
131
- if (x instanceof java .lang .Number ) {
132
- if (x instanceof java .lang .Integer ) {
133
- if (y instanceof java .lang .Integer )
134
- return ((java .lang .Integer )x ).intValue () == ((java .lang .Integer )y ).intValue ();
135
- return slowEqualsLongObject (x , ((java .lang .Integer )x ).longValue (), y );
136
- }
137
-
138
- if (x instanceof java .lang .Double ) {
139
- if (y instanceof java .lang .Double )
140
- return ((java .lang .Double )x ).doubleValue () == ((java .lang .Double )y ).doubleValue ();
141
- return slowEqualsDoubleObject (x , ((java .lang .Double )x ).doubleValue (), y );
142
- }
143
-
144
- if (x instanceof java .lang .Long ) {
145
- if (y instanceof java .lang .Long )
146
- return ((java .lang .Long )x ).longValue () == ((java .lang .Long )y ).longValue ();
147
- return slowEqualsLongObject (x , ((java .lang .Long )x ).longValue (), y );
148
- }
149
-
150
- if (x instanceof java .lang .Float ) {
151
- if (y instanceof java .lang .Float )
152
- return ((java .lang .Float )x ).floatValue () == ((java .lang .Float )y ).floatValue ();
153
- return slowEqualsDoubleObject (x , ((java .lang .Float )x ).doubleValue (), y );
154
- }
155
-
156
- if (x instanceof java .lang .Byte ) {
157
- if (y instanceof java .lang .Byte )
158
- return ((java .lang .Byte )x ).byteValue () == ((java .lang .Byte )y ).byteValue ();
159
- return slowEqualsLongObject (x , ((java .lang .Byte )x ).longValue (), y );
160
- }
140
+ public static boolean equalsNumObject (java .lang .Number xn , Object y ) {
141
+ if (xn instanceof java .lang .Integer ) {
142
+ if (y instanceof java .lang .Integer )
143
+ return ((java .lang .Integer )xn ).intValue () == ((java .lang .Integer )y ).intValue ();
144
+ return slowEqualsLongObject (xn , ((java .lang .Integer )xn ).longValue (), y );
145
+ }
161
146
162
- if (x instanceof java .lang .Short ) {
163
- if (y instanceof java .lang .Short )
164
- return ((java .lang .Short ) x ). shortValue () == ((java .lang .Short )y ).shortValue ();
165
- return slowEqualsLongObject ( x , ((java .lang .Short ) x ). longValue (), y );
166
- }
147
+ if (xn instanceof java .lang .Double ) {
148
+ if (y instanceof java .lang .Double )
149
+ return ((java .lang .Double ) xn ). doubleValue () == ((java .lang .Double )y ).doubleValue ();
150
+ return slowEqualsDoubleObject ( xn , ((java .lang .Double ) xn ). doubleValue (), y );
151
+ }
167
152
168
- if (x instanceof scala .math .ScalaNumber )
169
- return x .equals (y );
170
- if (y instanceof scala .math .ScalaNumber )
171
- return y .equals (x );
153
+ if (xn instanceof java .lang .Long ) {
154
+ if (y instanceof java .lang .Long )
155
+ return ((java .lang .Long )xn ).longValue () == ((java .lang .Long )y ).longValue ();
156
+ return slowEqualsLongObject (xn , ((java .lang .Long )xn ).longValue (), y );
157
+ }
172
158
173
- return x .equals (y );
159
+ if (xn instanceof java .lang .Float ) {
160
+ if (y instanceof java .lang .Float )
161
+ return ((java .lang .Float )xn ).floatValue () == ((java .lang .Float )y ).floatValue ();
162
+ return slowEqualsDoubleObject (xn , ((java .lang .Float )xn ).doubleValue (), y );
174
163
}
175
164
176
- if (x instanceof java .lang .Character ) {
177
- if (y instanceof java .lang .Character )
178
- return ((java .lang .Character ) x ). charValue () == ((java .lang .Character )y ).charValue ();
179
- return slowEqualsLongObject (x , (long )(( java .lang .Character ) x ). charValue (), y );
165
+ if (xn instanceof java .lang .Byte ) {
166
+ if (y instanceof java .lang .Byte )
167
+ return ((java .lang .Byte ) xn ). byteValue () == ((java .lang .Byte )y ).byteValue ();
168
+ return slowEqualsLongObject (xn , (( java .lang .Byte ) xn ). longValue (), y );
180
169
}
181
170
182
- return x .equals (y );
183
- }
171
+ if (xn instanceof java .lang .Short ) {
172
+ if (y instanceof java .lang .Short )
173
+ return ((java .lang .Short )xn ).shortValue () == ((java .lang .Short )y ).shortValue ();
174
+ return slowEqualsLongObject (xn , ((java .lang .Short )xn ).longValue (), y );
175
+ }
184
176
185
- // The following specialized variants are probably not useful with the new scheme
177
+ if (xn instanceof scala .math .ScalaNumber )
178
+ return xn .equals (y );
179
+ if (y instanceof scala .math .ScalaNumber )
180
+ return y .equals (xn );
186
181
187
- public static boolean equalsNumObject (java .lang .Number xn , Object y ) {
188
- return equals2 (xn , y );
182
+ if (xn == null )
183
+ return y == null ;
184
+ return xn .equals (y );
189
185
}
190
186
191
187
public static boolean equalsNumNum (java .lang .Number xn , java .lang .Number yn ) {
192
- return equals2 (xn , yn );
188
+ return equalsNumObject (xn , yn );
193
189
}
194
190
195
191
public static boolean equalsCharObject (java .lang .Character xc , Object y ) {
196
- return equals2 (xc , y );
192
+ if (y instanceof java .lang .Character )
193
+ return ((java .lang .Character )xc ).charValue () == ((java .lang .Character )y ).charValue ();
194
+ return slowEqualsLongObject (xc , (long )((java .lang .Character )xc ).charValue (), y );
197
195
}
198
196
199
197
public static boolean equalsNumChar (java .lang .Number xn , java .lang .Character yc ) {
200
- return equals2 (xn , yc );
198
+ return equalsNumObject (xn , yc );
201
199
}
202
200
203
201
private static boolean slowEqualsLongObject (Object x , long xn , Object y ) {
0 commit comments