diff --git a/gson/src/main/java/com/google/gson/JsonPrimitive.java b/gson/src/main/java/com/google/gson/JsonPrimitive.java index 88f4466fc8..1b3bd61067 100644 --- a/gson/src/main/java/com/google/gson/JsonPrimitive.java +++ b/gson/src/main/java/com/google/gson/JsonPrimitive.java @@ -262,14 +262,11 @@ public int hashCode() { if (value == null) { return 31; } - // Using recommended hashing algorithm from Effective Java for longs and doubles if (isIntegral(this)) { - long value = getAsNumber().longValue(); - return (int) (value ^ (value >>> 32)); + return Long.hashCode(getAsNumber().longValue()); } if (value instanceof Number) { - long value = Double.doubleToLongBits(getAsNumber().doubleValue()); - return (int) (value ^ (value >>> 32)); + return Double.hashCode(getAsNumber().doubleValue()); } return value.hashCode(); }