diff --git a/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java b/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java index e03241319..eddc5782a 100644 --- a/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java +++ b/src/main/java/net/openhft/chronicle/map/ChronicleMapBuilder.java @@ -78,15 +78,8 @@ public class ChronicleMapBuilder implements Cloneable { ChronicleMapBuilder(Class keyClass, Class valueClass) { this.keyClass = keyClass; this.valueClass = valueClass; - Class keyClassForMarshaller = - marshallerUseFactory(keyClass) && keyClass.isInterface() ? - DataValueClasses.directClassFor(keyClass) : keyClass; - keyMarshaller = chooseDefaultMarshaller(keyClassForMarshaller); - Class valueClassForMarshaller = - marshallerUseFactory(valueClass) && valueClass.isInterface() ? - DataValueClasses.directClassFor(valueClass) : valueClass; - valueMarshaller = chooseDefaultMarshaller(valueClassForMarshaller); - + keyMarshaller = chooseDefaultMarshaller(keyClass); + valueMarshaller = chooseDefaultMarshaller(valueClass); valueFactory = marshallerUseFactory(valueClass) ? new AllocateInstanceObjectFactory(valueClass.isInterface() ? DataValueClasses.directClassFor(valueClass) : @@ -106,12 +99,14 @@ public class ChronicleMapBuilder implements Cloneable { @SuppressWarnings("unchecked") private static BytesMarshaller chooseDefaultMarshaller(@NotNull Class tClass) { + Class classForMarshaller = marshallerUseFactory(tClass) && tClass.isInterface() ? + DataValueClasses.directClassFor(tClass) : tClass; if (Byteable.class.isAssignableFrom(tClass)) - return new ByteableMarshaller(tClass); + return new ByteableMarshaller(classForMarshaller); if (BytesMarshallable.class.isAssignableFrom(tClass)) - return new BytesMarshallableMarshaller(tClass); + return new BytesMarshallableMarshaller(classForMarshaller); if (Externalizable.class.isAssignableFrom(tClass)) - return new ExternalizableMarshaller(tClass); + return new ExternalizableMarshaller(classForMarshaller); if (tClass == CharSequence.class) return (BytesMarshaller) CharSequenceMarshaller.INSTANCE; if (tClass == String.class)