You need two variables which are comparable, have the same value, but represent different instances, for example:
Integer x = new Integer(0);
Integer y = new Integer(0);
x <= y
and y <= x
are both true because the Integer
are unboxed, however the instance equality x == y
is false.
Note that it works with Float
, Long
and Double
too, and any value (not just 0) works.
You can also play with the intricacies of your JVM - they generally cache integer up to 127 only, so this would work too:
Integer x = 128;
Integer y = 128;
(but it would not with 127).
Or more simply, since Double
s are generally not cached at all:
Double x = 0d;
Double y = 0d;
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…