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



Reply via email to