diff --git a/src/main/java/net/openhft/chronicle/map/SerializationBuilder.java b/src/main/java/net/openhft/chronicle/map/SerializationBuilder.java index fb4be52d4..34818fe75 100644 --- a/src/main/java/net/openhft/chronicle/map/SerializationBuilder.java +++ b/src/main/java/net/openhft/chronicle/map/SerializationBuilder.java @@ -37,6 +37,11 @@ import java.io.Externalizable; import java.io.IOException; import java.io.Serializable; import java.lang.reflect.Modifier; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.net.URL; +import java.util.Arrays; +import java.util.List; import static net.openhft.chronicle.hash.serialization.SizeMarshallers.constant; import static net.openhft.chronicle.map.Objects.hash; @@ -55,8 +60,13 @@ final class SerializationBuilder implements Cloneable, Serializable{ Externalizable.class.isAssignableFrom(c); } + private static final List knownJDKImmutableClasses = Arrays.asList( + String.class, Byte.class, Short.class, Character.class, Integer.class, + Float.class, Long.class, Double.class, BigDecimal.class, BigInteger.class, URL.class + ); + private static boolean instancesAreMutable(Class c) { - return c != String.class; + return !knownJDKImmutableClasses.contains(c); } enum Role {KEY, VALUE}