From 4067c9c07d2559d6a4f1e8da92ff488f434f52f0 Mon Sep 17 00:00:00 2001 From: godotg Date: Tue, 25 Jun 2024 15:40:12 +0800 Subject: [PATCH] fix[orm]: interface judgement --- orm/src/main/java/com/zfoo/orm/codec/MapCodec.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/orm/src/main/java/com/zfoo/orm/codec/MapCodec.java b/orm/src/main/java/com/zfoo/orm/codec/MapCodec.java index 4353fc3b..b51d4da8 100644 --- a/orm/src/main/java/com/zfoo/orm/codec/MapCodec.java +++ b/orm/src/main/java/com/zfoo/orm/codec/MapCodec.java @@ -19,6 +19,7 @@ import org.bson.codecs.Codec; import org.bson.codecs.DecoderContext; import org.bson.codecs.EncoderContext; +import java.lang.reflect.Modifier; import java.util.HashMap; import java.util.Map; import java.util.function.Function; @@ -62,7 +63,7 @@ public class MapCodec implements Codec> { @Override public Map decode(BsonReader reader, DecoderContext context) { - var map = getInstance(); + var map = newInstance(); reader.readStartDocument(); while (BsonType.END_OF_DOCUMENT != reader.readBsonType()) { K key = keyDecodeFunction.apply(reader.readName()); @@ -83,8 +84,8 @@ public class MapCodec implements Codec> { return encoderClass; } - private Map getInstance() { - if (encoderClass.isInterface()) { + private Map newInstance() { + if (encoderClass.isInterface() || Modifier.isAbstract(encoderClass.getModifiers())) { return new HashMap<>(); } return ReflectionUtils.newInstance(encoderClass);