A classical beginner's mistake. You are using Java objects and comparing
references, not the values, so this is expected behavior. Simply compare
the objects using equals().
On 4.8.2016 15:48, João Paulo Varandas wrote:
Hi guys!
It seems that version 1.8.0_101 has a bug in equality for same java data
types (java.lang.Long).
Check that:
jjs> new java.lang.Long(10) == new java.lang.Long(10)
false
Oops!?
See the gist:
https://gist.github.com/joaovarandas/51567bd3b576d48a4c574d60d5a60ba3
The results for all types should be ...
== true
=== true
equals true
But for java.lang.Long and java.math.BigDecimal:
== false
=== false
equals true
Maybe we could expand the test to other classes too, but the issue ...
- It does happen in 1.8.0_101.
- It does not 1.8.0_91.
- It does happen with other classes (BigDecimal).
- It does not happen with String.
- It does not happen with Integer.
I understand this is not an expected behavior. For now I'm rolling back
to 1.8.0_91 in my environments.
Do you me to file a bug?
Thanks
J