This is an automated email from the ASF dual-hosted git repository.

chaokunyang pushed a commit to branch releases-0.12
in repository https://gitbox.apache.org/repos/asf/fory.git

commit b522c9511c2cfb3932feadb079ced0a73fc4bb44
Author: Shawn Yang <[email protected]>
AuthorDate: Thu Aug 14 16:35:50 2025 +0800

    refactor(java): rename abstract collection/map serializers to 
Map/ListLikeSerializer (#2466)
    
    <!--
    **Thanks for contributing to Fory.**
    
    **If this is your first time opening a PR on fory, you can refer to
    
[CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).**
    
    Contribution Checklist
    
    - The **Apache Fory** community has requirements on the naming of pr
    titles. You can also find instructions in
    [CONTRIBUTING.md](https://github.com/apache/fory/blob/main/CONTRIBUTING.md).
    
    - Fory has a strong focus on performance. If the PR you submit will have
    an impact on performance, please benchmark it first and provide the
    benchmark result here.
    -->
    
    ## What does this PR do?
    
    <!-- Describe the purpose of this PR. -->
    
    ## Related issues
    
    <!--
    Is there any related issue? Please attach here.
    
    - #xxxx0
    - #xxxx1
    - #xxxx2
    -->
    
    ## Does this PR introduce any user-facing change?
    
    <!--
    If any user-facing interface changes, please [open an
    issue](https://github.com/apache/fory/issues/new/choose) describing the
    need to do so and update the document if necessary.
    -->
    
    - [ ] Does this PR introduce any public API change?
    - [ ] Does this PR introduce any binary protocol compatibility change?
    
    ## Benchmark
    
    <!--
    When the PR has an impact on performance (if you don't know whether the
    PR will have an impact on performance, you can submit the PR first, and
    if it will have impact on performance, the code reviewer will explain
    it), be sure to attach a benchmark data here.
    -->
---
 docs/guide/java_serialization_guide.md             | 20 +++++-----
 docs/specification/java_serialization_spec.md      |  4 +-
 docs/specification/xlang_serialization_spec.md     |  2 +-
 .../fory/builder/BaseObjectCodecBuilder.java       | 43 +++++++++++-----------
 .../org/apache/fory/resolver/FieldResolver.java    | 24 ++++++------
 .../org/apache/fory/resolver/XtypeResolver.java    | 12 +++---
 .../fory/serializer/CompatibleSerializer.java      | 14 +++----
 ...rializer.java => CollectionLikeSerializer.java} |  8 ++--
 .../collection/CollectionSerializer.java           |  2 +-
 .../collection/CollectionSerializers.java          | 14 +++----
 ...ctMapSerializer.java => MapLikeSerializer.java} |  9 ++---
 .../fory/serializer/collection/MapSerializer.java  |  2 +-
 .../fory/serializer/collection/MapSerializers.java |  4 +-
 .../scala/SingletonCollectionSerializer.java       |  4 +-
 .../serializer/scala/SingletonMapSerializer.java   |  4 +-
 .../fory/serializer/kotlin/CollectionSerializer.kt |  4 +-
 .../serializer/scala/CollectionSerializer.scala    |  4 +-
 .../fory/serializer/scala/MapSerializer.scala      |  4 +-
 .../fory/serializer/scala/RangeSerializer.scala    |  6 +--
 19 files changed, 90 insertions(+), 94 deletions(-)

diff --git a/docs/guide/java_serialization_guide.md 
b/docs/guide/java_serialization_guide.md
index 449802277..a4f7da2b8 100644
--- a/docs/guide/java_serialization_guide.md
+++ b/docs/guide/java_serialization_guide.md
@@ -308,8 +308,8 @@ fory.registerSerializer(Foo.class, new FooSerializer(fory));
 
 ### Implement Collection Serializer
 
-Similar to maps, when implementing a serializer for a custom Collection type, 
you must extend `CollectionSerializer` or `AbstractCollectionSerializer`.
-The key difference between these two is that `AbstractCollectionSerializer` 
can serialize a class which has a collection-like structure but is not a java 
Collection subtype.
+Similar to maps, when implementing a serializer for a custom Collection type, 
you must extend `CollectionSerializer` or `CollectionLikeSerializer`.
+The key difference between these two is that `CollectionLikeSerializer` can 
serialize a class which has a collection-like structure but is not a java 
Collection subtype.
 
 For collection serializer, this is a special parameter `supportCodegenHook` 
needs be configured:
 
@@ -433,7 +433,7 @@ class IntList extends AbstractCollection<Integer> {
     }
 }
 
-class IntListSerializer extends AbstractCollectionSerializer<IntList> {
+class IntListSerializer extends CollectionLikeSerializer<IntList> {
     public IntListSerializer(Fory fory) {
         // Disable JIT since we're handling serialization directly
         super(fory, IntList.class, false);
@@ -547,7 +547,7 @@ Sometimes you may want to implement a serializer for a type 
that behaves like a
 
 The key principles for collection-like type serialization are:
 
-1. Extend `AbstractCollectionSerializer` for custom collection-like types
+1. Extend `CollectionLikeSerializer` for custom collection-like types
 2. Enable JIT optimization with `supportCodegenHook`
 3. Provide efficient element access through views
 4. Maintain proper size tracking
@@ -643,7 +643,7 @@ class CollectionView extends AbstractCollection<Object> {
     }
 }
 
-class CustomCollectionSerializer extends 
AbstractCollectionSerializer<CustomCollectionLike> {
+class CustomCollectionSerializer extends 
CollectionLikeSerializer<CustomCollectionLike> {
     public CustomCollectionSerializer(Fory fory) {
         super(fory, CustomCollectionLike.class, true);
     }
@@ -699,7 +699,7 @@ Note that this implementation provides better performance 
at the cost of flexibi
 
 ### Implement Map Serializer
 
-When implementing a serializer for a custom Map type, you must extend 
`MapSerializer` or `AbstractMapSerializer`. The key difference between these 
two is that `AbstractMapSerializer` can serialize a class which has a map-like 
structure but is not a java Map subtype.
+When implementing a serializer for a custom Map type, you must extend 
`MapSerializer` or `MapLikeSerializer`. The key difference between these two is 
that `MapLikeSerializer` can serialize a class which has a map-like structure 
but is not a java Map subtype.
 
 Similar to collection serializer, this is a special parameter 
`supportCodegenHook` needs be configured:
 
@@ -797,7 +797,7 @@ class FixedValueMap extends AbstractMap<String, Integer> {
     }
 }
 
-class FixedValueMapSerializer extends AbstractMapSerializer<FixedValueMap> {
+class FixedValueMapSerializer extends MapLikeSerializer<FixedValueMap> {
     public FixedValueMapSerializer(Fory fory) {
         // Disable codegen since we're handling serialization directly
         super(fory, FixedValueMap.class, false);
@@ -900,7 +900,7 @@ Sometimes you may want to implement a serializer for a type 
that behaves like a
 
 The key principles for map-like type serialization are:
 
-1. Extend `AbstractMapSerializer` for custom collection-like types
+1. Extend `MapLikeSerializer` for custom collection-like types
 2. Enable JIT optimization with `supportCodegenHook`
 3. Provide efficient element access through views
 4. Maintain proper size tracking
@@ -1028,7 +1028,7 @@ class MapView extends AbstractMap<Object, Object> {
     }
 }
 
-class CustomMapLikeSerializer extends AbstractMapSerializer<CustomMapLike> {
+class CustomMapLikeSerializer extends MapLikeSerializer<CustomMapLike> {
     public CustomMapLikeSerializer(Fory fory) {
         super(fory, CustomMapLike.class, true);
     }
@@ -1082,7 +1082,7 @@ fory.registerSerializer(CustomCollection.class, new 
CustomCollectionSerializer<>
 
 Note that when implementing custom map or collection serializers:
 
-1. Always extend the appropriate base class 
(`MapSerializer`/`AbstractMapSerializer` for maps, 
`CollectionSerializer`/`AbstractCollectionSerializer` for collections)
+1. Always extend the appropriate base class 
(`MapSerializer`/`MapLikeSerializer` for maps, 
`CollectionSerializer`/`CollectionLikeSerializer` for collections)
 2. Consider the impact of `supportCodegenHook` on performance and functionality
 3. Properly handle reference tracking if needed
 4. Implement proper size management using `setNumElements` and 
`getAndClearNumElements` when `supportCodegenHook` is `true`
diff --git a/docs/specification/java_serialization_spec.md 
b/docs/specification/java_serialization_spec.md
index 2aa12b5f2..51fa30480 100644
--- a/docs/specification/java_serialization_spec.md
+++ b/docs/specification/java_serialization_spec.md
@@ -369,7 +369,7 @@ Which encoding to choose:
 
 ### Collection
 
-> All collection serializers must extend `AbstractCollectionSerializer`.
+> All collection serializers must extend `CollectionLikeSerializer`.
 
 Format:
 
@@ -425,7 +425,7 @@ type.
 
 ### Map
 
-> All Map serializers must extend `AbstractMapSerializer`.
+> All Map serializers must extend `MapLikeSerializer`.
 
 Format:
 
diff --git a/docs/specification/xlang_serialization_spec.md 
b/docs/specification/xlang_serialization_spec.md
index 66ced9319..2fcbab1db 100644
--- a/docs/specification/xlang_serialization_spec.md
+++ b/docs/specification/xlang_serialization_spec.md
@@ -661,7 +661,7 @@ else:
             fory.write_value(buffer, elem)
 ```
 
-[`CollectionSerializer#writeElements`](https://github.com/apache/fory/blob/20a1a78b17a75a123a6f5b7094c06ff77defc0fe/java/fory-core/src/main/java/org/apache/fory/serializer/collection/AbstractCollectionSerializer.java#L302)
+[`CollectionSerializer#writeElements`](https://github.com/apache/fory/blob/20a1a78b17a75a123a6f5b7094c06ff77defc0fe/java/fory-core/src/main/java/org/apache/fory/serializer/collection/CollectionLikeSerializer.java#L302)
 can be taken as an example.
 
 ### array
diff --git 
a/java/fory-core/src/main/java/org/apache/fory/builder/BaseObjectCodecBuilder.java
 
b/java/fory-core/src/main/java/org/apache/fory/builder/BaseObjectCodecBuilder.java
index 0d965a5ff..859dd594f 100644
--- 
a/java/fory-core/src/main/java/org/apache/fory/builder/BaseObjectCodecBuilder.java
+++ 
b/java/fory-core/src/main/java/org/apache/fory/builder/BaseObjectCodecBuilder.java
@@ -46,11 +46,11 @@ import static 
org.apache.fory.codegen.ExpressionUtils.subtract;
 import static org.apache.fory.codegen.ExpressionUtils.uninline;
 import static org.apache.fory.collection.Collections.ofHashSet;
 import static 
org.apache.fory.serializer.CodegenSerializer.LazyInitBeanSerializer;
-import static 
org.apache.fory.serializer.collection.AbstractMapSerializer.MAX_CHUNK_SIZE;
 import static org.apache.fory.serializer.collection.MapFlags.KEY_DECL_TYPE;
 import static org.apache.fory.serializer.collection.MapFlags.TRACKING_KEY_REF;
 import static 
org.apache.fory.serializer.collection.MapFlags.TRACKING_VALUE_REF;
 import static org.apache.fory.serializer.collection.MapFlags.VALUE_DECL_TYPE;
+import static 
org.apache.fory.serializer.collection.MapLikeSerializer.MAX_CHUNK_SIZE;
 import static org.apache.fory.type.TypeUtils.CLASS_TYPE;
 import static org.apache.fory.type.TypeUtils.COLLECTION_TYPE;
 import static org.apache.fory.type.TypeUtils.ITERATOR_TYPE;
@@ -115,9 +115,9 @@ import org.apache.fory.serializer.ObjectSerializer;
 import org.apache.fory.serializer.PrimitiveSerializers.LongSerializer;
 import org.apache.fory.serializer.Serializer;
 import org.apache.fory.serializer.StringSerializer;
-import org.apache.fory.serializer.collection.AbstractCollectionSerializer;
-import org.apache.fory.serializer.collection.AbstractMapSerializer;
 import org.apache.fory.serializer.collection.CollectionFlags;
+import org.apache.fory.serializer.collection.CollectionLikeSerializer;
+import org.apache.fory.serializer.collection.MapLikeSerializer;
 import org.apache.fory.type.GenericType;
 import org.apache.fory.type.TypeUtils;
 import org.apache.fory.util.GraalvmSupport;
@@ -140,8 +140,8 @@ public abstract class BaseObjectCodecBuilder extends 
CodecBuilder {
   private static final TypeRef<?> STRING_SERIALIZER_TYPE_TOKEN = 
TypeRef.of(StringSerializer.class);
   private static final TypeRef<?> SERIALIZER_TYPE = 
TypeRef.of(Serializer.class);
   private static final TypeRef<?> COLLECTION_SERIALIZER_TYPE =
-      TypeRef.of(AbstractCollectionSerializer.class);
-  private static final TypeRef<?> MAP_SERIALIZER_TYPE = 
TypeRef.of(AbstractMapSerializer.class);
+      TypeRef.of(CollectionLikeSerializer.class);
+  private static final TypeRef<?> MAP_SERIALIZER_TYPE = 
TypeRef.of(MapLikeSerializer.class);
   private static final TypeRef<?> GENERIC_TYPE = TypeRef.of(GenericType.class);
 
   protected final Reference refResolverRef;
@@ -330,7 +330,7 @@ public abstract class BaseObjectCodecBuilder extends 
CodecBuilder {
     ctx.addImports(LazyInitBeanSerializer.class, EnumSerializer.class);
     ctx.addImports(Serializer.class, StringSerializer.class);
     ctx.addImports(ObjectSerializer.class, CompatibleSerializer.class);
-    ctx.addImports(AbstractCollectionSerializer.class, 
AbstractMapSerializer.class);
+    ctx.addImports(CollectionLikeSerializer.class, MapLikeSerializer.class);
   }
 
   /**
@@ -618,11 +618,11 @@ public abstract class BaseObjectCodecBuilder extends 
CodecBuilder {
         }
       }
       if (useCollectionSerialization(cls)
-          && 
!AbstractCollectionSerializer.class.isAssignableFrom(serializerClass)) {
-        serializerClass = AbstractCollectionSerializer.class;
+          && 
!CollectionLikeSerializer.class.isAssignableFrom(serializerClass)) {
+        serializerClass = CollectionLikeSerializer.class;
       } else if (useMapSerialization(cls)
-          && !AbstractMapSerializer.class.isAssignableFrom(serializerClass)) {
-        serializerClass = AbstractMapSerializer.class;
+          && !MapLikeSerializer.class.isAssignableFrom(serializerClass)) {
+        serializerClass = MapLikeSerializer.class;
       }
       TypeRef<? extends Serializer> serializerTypeRef = 
TypeRef.of(serializerClass);
       Expression fieldTypeExpr = getClassExpr(cls);
@@ -829,9 +829,8 @@ public abstract class BaseObjectCodecBuilder extends 
CodecBuilder {
                 "writeCollectionClassInfo",
                 false);
       }
-    } else if 
(!TypeRef.of(AbstractCollectionSerializer.class).isSupertypeOf(serializer.type()))
 {
-      serializer =
-          cast(serializer, TypeRef.of(AbstractCollectionSerializer.class), 
"colSerializer");
+    } else if 
(!TypeRef.of(CollectionLikeSerializer.class).isSupertypeOf(serializer.type())) {
+      serializer = cast(serializer, 
TypeRef.of(CollectionLikeSerializer.class), "colSerializer");
     }
     TypeRef<?> elementType = getElementType(typeRef);
     // write collection data.
@@ -954,7 +953,7 @@ public abstract class BaseObjectCodecBuilder extends 
CodecBuilder {
 
   /**
    * Write collection elements header: flags and maybe elements classinfo. 
Keep this consistent with
-   * `AbstractCollectionSerializer#writeElementsHeader`.
+   * `CollectionLikeSerializer#writeElementsHeader`.
    *
    * @return Tuple(flags, Nullable ( element serializer))
    */
@@ -1140,8 +1139,8 @@ public abstract class BaseObjectCodecBuilder extends 
CodecBuilder {
             invokeGenerated(
                 ctx, ofHashSet(buffer, map), writeClassAction, 
"writeMapClassInfo", false);
       }
-    } else if 
(!AbstractMapSerializer.class.isAssignableFrom(serializer.type().getRawType())) 
{
-      serializer = cast(serializer, TypeRef.of(AbstractMapSerializer.class), 
"mapSerializer");
+    } else if 
(!MapLikeSerializer.class.isAssignableFrom(serializer.type().getRawType())) {
+      serializer = cast(serializer, TypeRef.of(MapLikeSerializer.class), 
"mapSerializer");
     }
     Expression write =
         new If(
@@ -1472,7 +1471,7 @@ public abstract class BaseObjectCodecBuilder extends 
CodecBuilder {
     if (!inline) {
       expressions.add(new Return(entry));
       // method too big, spilt it into a new method.
-      // Generate similar signature as `AbstractMapSerializer.writeJavaChunk`(
+      // Generate similar signature as `MapLikeSerializer.writeJavaChunk`(
       //   MemoryBuffer buffer,
       //   Entry<Object, Object> entry,
       //   Iterator<Entry<Object, Object>> iterator,
@@ -1679,8 +1678,8 @@ public abstract class BaseObjectCodecBuilder extends 
CodecBuilder {
       }
     } else {
       checkArgument(
-          
AbstractCollectionSerializer.class.isAssignableFrom(serializer.type().getRawType()),
-          "Expected AbstractCollectionSerializer but got %s",
+          
CollectionLikeSerializer.class.isAssignableFrom(serializer.type().getRawType()),
+          "Expected CollectionLikeSerializer but got %s",
           serializer.type());
     }
     Invoke supportHook = inlineInvoke(serializer, "supportCodegenHook", 
PRIMITIVE_BOOLEAN_TYPE);
@@ -1901,8 +1900,8 @@ public abstract class BaseObjectCodecBuilder extends 
CodecBuilder {
       }
     } else {
       checkArgument(
-          
AbstractMapSerializer.class.isAssignableFrom(serializer.type().getRawType()),
-          "Expected AbstractMapSerializer but got %s",
+          
MapLikeSerializer.class.isAssignableFrom(serializer.type().getRawType()),
+          "Expected MapLikeSerializer but got %s",
           serializer.type());
     }
     Expression mapSerializer = serializer;
@@ -2103,7 +2102,7 @@ public abstract class BaseObjectCodecBuilder extends 
CodecBuilder {
               new Return(ofInt(0)));
       expressions.add(returnSizeAndHeader);
       // method too big, spilt it into a new method.
-      // Generate similar signature as `AbstractMapSerializer.writeJavaChunk`(
+      // Generate similar signature as `MapLikeSerializer.writeJavaChunk`(
       //   MemoryBuffer buffer,
       //   long size,
       //   int chunkHeader,
diff --git 
a/java/fory-core/src/main/java/org/apache/fory/resolver/FieldResolver.java 
b/java/fory-core/src/main/java/org/apache/fory/resolver/FieldResolver.java
index aab4f570e..b7d75dfce 100644
--- a/java/fory-core/src/main/java/org/apache/fory/resolver/FieldResolver.java
+++ b/java/fory-core/src/main/java/org/apache/fory/resolver/FieldResolver.java
@@ -53,8 +53,8 @@ import org.apache.fory.reflect.FieldAccessor;
 import org.apache.fory.reflect.ReflectionUtils;
 import org.apache.fory.reflect.TypeRef;
 import org.apache.fory.serializer.PrimitiveSerializers;
-import org.apache.fory.serializer.collection.AbstractCollectionSerializer;
-import org.apache.fory.serializer.collection.AbstractMapSerializer;
+import org.apache.fory.serializer.collection.CollectionLikeSerializer;
+import org.apache.fory.serializer.collection.MapLikeSerializer;
 import org.apache.fory.type.Descriptor;
 import org.apache.fory.type.TypeUtils;
 import org.apache.fory.util.MurmurHash3;
@@ -580,8 +580,8 @@ public class FieldResolver {
     if (fieldType == FieldTypes.COLLECTION_ELEMENT_FINAL) {
       ClassInfo elementClassInfo = classResolver.readClassInfo(buffer, 
classInfoHolder);
       ClassInfo classInfo = classResolver.readClassInfo(buffer, 
classInfoHolder);
-      AbstractCollectionSerializer collectionSerializer =
-          (AbstractCollectionSerializer) classInfo.getSerializer();
+      CollectionLikeSerializer collectionSerializer =
+          (CollectionLikeSerializer) classInfo.getSerializer();
       try {
         
collectionSerializer.setElementSerializer(elementClassInfo.getSerializer());
         o = collectionSerializer.read(buffer);
@@ -594,7 +594,7 @@ public class FieldResolver {
       ClassInfo keyClassInfo = classResolver.readClassInfo(buffer, 
classInfoHolder);
       ClassInfo valueClassInfo = classResolver.readClassInfo(buffer, 
classInfoHolder);
       ClassInfo classInfo = classResolver.readClassInfo(buffer, 
classInfoHolder);
-      AbstractMapSerializer mapSerializer = (AbstractMapSerializer) 
classInfo.getSerializer();
+      MapLikeSerializer mapSerializer = (MapLikeSerializer) 
classInfo.getSerializer();
       try {
         mapSerializer.setKeySerializer(keyClassInfo.getSerializer());
         mapSerializer.setValueSerializer(valueClassInfo.getSerializer());
@@ -608,7 +608,7 @@ public class FieldResolver {
     } else if (fieldType == FieldTypes.MAP_KEY_FINAL) {
       ClassInfo keyClassInfo = classResolver.readClassInfo(buffer, 
classInfoHolder);
       ClassInfo classInfo = classResolver.readClassInfo(buffer, 
classInfoHolder);
-      AbstractMapSerializer mapSerializer = (AbstractMapSerializer) 
classInfo.getSerializer();
+      MapLikeSerializer mapSerializer = (MapLikeSerializer) 
classInfo.getSerializer();
       try {
         mapSerializer.setKeySerializer(keyClassInfo.getSerializer());
         o = mapSerializer.read(buffer);
@@ -621,7 +621,7 @@ public class FieldResolver {
       Preconditions.checkArgument(fieldType == FieldTypes.MAP_VALUE_FINAL);
       ClassInfo valueClassInfo = classResolver.readClassInfo(buffer, 
classInfoHolder);
       ClassInfo classInfo = classResolver.readClassInfo(buffer, 
classInfoHolder);
-      AbstractMapSerializer mapSerializer = (AbstractMapSerializer) 
classInfo.getSerializer();
+      MapLikeSerializer mapSerializer = (MapLikeSerializer) 
classInfo.getSerializer();
       try {
         mapSerializer.setValueSerializer(valueClassInfo.getSerializer());
         o = mapSerializer.read(buffer);
@@ -639,8 +639,8 @@ public class FieldResolver {
     if (fieldType == FieldTypes.COLLECTION_ELEMENT_FINAL) {
       ClassInfo elementClassInfo = classResolver.readClassInfo(buffer, 
classInfoHolder);
       ClassInfo classInfo = classResolver.readClassInfo(buffer, 
fieldInfo.getClassInfoHolder());
-      AbstractCollectionSerializer collectionSerializer =
-          (AbstractCollectionSerializer) classInfo.getSerializer();
+      CollectionLikeSerializer collectionSerializer =
+          (CollectionLikeSerializer) classInfo.getSerializer();
       try {
         
collectionSerializer.setElementSerializer(elementClassInfo.getSerializer());
         o = collectionSerializer.read(buffer);
@@ -653,7 +653,7 @@ public class FieldResolver {
       ClassInfo keyClassInfo = classResolver.readClassInfo(buffer, 
classInfoHolder);
       ClassInfo valueClassInfo = classResolver.readClassInfo(buffer, 
classInfoHolder);
       ClassInfo classInfo = classResolver.readClassInfo(buffer, 
fieldInfo.getClassInfoHolder());
-      AbstractMapSerializer mapSerializer = (AbstractMapSerializer) 
classInfo.getSerializer();
+      MapLikeSerializer mapSerializer = (MapLikeSerializer) 
classInfo.getSerializer();
       try {
         mapSerializer.setKeySerializer(keyClassInfo.getSerializer());
         mapSerializer.setValueSerializer(valueClassInfo.getSerializer());
@@ -667,7 +667,7 @@ public class FieldResolver {
     } else if (fieldType == FieldTypes.MAP_KEY_FINAL) {
       ClassInfo keyClassInfo = classResolver.readClassInfo(buffer, 
classInfoHolder);
       ClassInfo classInfo = classResolver.readClassInfo(buffer, 
fieldInfo.getClassInfoHolder());
-      AbstractMapSerializer mapSerializer = (AbstractMapSerializer) 
classInfo.getSerializer();
+      MapLikeSerializer mapSerializer = (MapLikeSerializer) 
classInfo.getSerializer();
       try {
         mapSerializer.setKeySerializer(keyClassInfo.getSerializer());
         o = mapSerializer.read(buffer);
@@ -680,7 +680,7 @@ public class FieldResolver {
       Preconditions.checkArgument(fieldType == FieldTypes.MAP_VALUE_FINAL);
       ClassInfo valueClassInfo = classResolver.readClassInfo(buffer, 
classInfoHolder);
       ClassInfo classInfo = classResolver.readClassInfo(buffer, 
fieldInfo.getClassInfoHolder());
-      AbstractMapSerializer mapSerializer = (AbstractMapSerializer) 
classInfo.getSerializer();
+      MapLikeSerializer mapSerializer = (MapLikeSerializer) 
classInfo.getSerializer();
       try {
         mapSerializer.setValueSerializer(valueClassInfo.getSerializer());
         o = mapSerializer.read(buffer);
diff --git 
a/java/fory-core/src/main/java/org/apache/fory/resolver/XtypeResolver.java 
b/java/fory-core/src/main/java/org/apache/fory/resolver/XtypeResolver.java
index 4cd2bfdf0..dcdf71e5b 100644
--- a/java/fory-core/src/main/java/org/apache/fory/resolver/XtypeResolver.java
+++ b/java/fory-core/src/main/java/org/apache/fory/resolver/XtypeResolver.java
@@ -74,11 +74,11 @@ import org.apache.fory.serializer.ObjectSerializer;
 import org.apache.fory.serializer.SerializationUtils;
 import org.apache.fory.serializer.Serializer;
 import org.apache.fory.serializer.Serializers;
-import org.apache.fory.serializer.collection.AbstractCollectionSerializer;
-import org.apache.fory.serializer.collection.AbstractMapSerializer;
+import org.apache.fory.serializer.collection.CollectionLikeSerializer;
 import org.apache.fory.serializer.collection.CollectionSerializer;
 import 
org.apache.fory.serializer.collection.CollectionSerializers.ArrayListSerializer;
 import 
org.apache.fory.serializer.collection.CollectionSerializers.HashSetSerializer;
+import org.apache.fory.serializer.collection.MapLikeSerializer;
 import org.apache.fory.serializer.collection.MapSerializer;
 import org.apache.fory.type.GenericType;
 import org.apache.fory.type.Generics;
@@ -441,8 +441,8 @@ public class XtypeResolver implements TypeResolver {
       } else {
         ClassInfo classInfo = classResolver.getClassInfo(cls, false);
         if (classInfo != null && classInfo.serializer != null) {
-          if (classInfo.serializer instanceof AbstractMapSerializer
-              && ((AbstractMapSerializer) 
classInfo.serializer).supportCodegenHook()) {
+          if (classInfo.serializer instanceof MapLikeSerializer
+              && ((MapLikeSerializer) 
classInfo.serializer).supportCodegenHook()) {
             serializer = classInfo.serializer;
           } else {
             serializer = new MapSerializer(fory, cls);
@@ -469,8 +469,8 @@ public class XtypeResolver implements TypeResolver {
   private Serializer<?> getCollectionSerializer(Class<?> cls) {
     ClassInfo classInfo = classResolver.getClassInfo(cls, false);
     if (classInfo != null && classInfo.serializer != null) {
-      if (classInfo.serializer instanceof AbstractCollectionSerializer
-          && ((AbstractCollectionSerializer) 
(classInfo.serializer)).supportCodegenHook()) {
+      if (classInfo.serializer instanceof CollectionLikeSerializer
+          && ((CollectionLikeSerializer) 
(classInfo.serializer)).supportCodegenHook()) {
         return classInfo.serializer;
       }
     }
diff --git 
a/java/fory-core/src/main/java/org/apache/fory/serializer/CompatibleSerializer.java
 
b/java/fory-core/src/main/java/org/apache/fory/serializer/CompatibleSerializer.java
index a302d2b66..eb3242239 100644
--- 
a/java/fory-core/src/main/java/org/apache/fory/serializer/CompatibleSerializer.java
+++ 
b/java/fory-core/src/main/java/org/apache/fory/serializer/CompatibleSerializer.java
@@ -31,8 +31,8 @@ import org.apache.fory.reflect.FieldAccessor;
 import org.apache.fory.resolver.ClassInfo;
 import org.apache.fory.resolver.ClassResolver;
 import org.apache.fory.resolver.FieldResolver;
-import org.apache.fory.serializer.collection.AbstractCollectionSerializer;
-import org.apache.fory.serializer.collection.AbstractMapSerializer;
+import org.apache.fory.serializer.collection.CollectionLikeSerializer;
+import org.apache.fory.serializer.collection.MapLikeSerializer;
 import org.apache.fory.util.Preconditions;
 import org.apache.fory.util.record.RecordInfo;
 import org.apache.fory.util.record.RecordUtils;
@@ -232,8 +232,8 @@ public final class CompatibleSerializer<T> extends 
CompatibleSerializerBase<T> {
     // following write is consistent with 
`BaseSeqCodecBuilder.serializeForCollection`
     ClassInfo classInfo = fieldInfo.getClassInfo(fieldValue.getClass());
     classResolver.writeClassInfo(buffer, classInfo);
-    AbstractCollectionSerializer collectionSerializer =
-        (AbstractCollectionSerializer) classInfo.getSerializer();
+    CollectionLikeSerializer collectionSerializer =
+        (CollectionLikeSerializer) classInfo.getSerializer();
     try {
       
collectionSerializer.setElementSerializer(elementClassInfo.getSerializer());
       collectionSerializer.write(buffer, fieldValue);
@@ -253,7 +253,7 @@ public final class CompatibleSerializer<T> extends 
CompatibleSerializerBase<T> {
     // following write is consistent with `BaseSeqCodecBuilder.serializeForMap`
     ClassInfo classInfo = fieldInfo.getClassInfo(fieldValue.getClass());
     classResolver.writeClassInfo(buffer, classInfo);
-    AbstractMapSerializer mapSerializer = (AbstractMapSerializer) 
classInfo.getSerializer();
+    MapLikeSerializer mapSerializer = (MapLikeSerializer) 
classInfo.getSerializer();
     try {
       mapSerializer.setKeySerializer(keyClassInfo.getSerializer());
       mapSerializer.setValueSerializer(valueClassInfo.getSerializer());
@@ -273,7 +273,7 @@ public final class CompatibleSerializer<T> extends 
CompatibleSerializerBase<T> {
     // following write is consistent with `BaseSeqCodecBuilder.serializeForMap`
     ClassInfo classInfo = fieldInfo.getClassInfo(fieldValue.getClass());
     classResolver.writeClassInfo(buffer, classInfo);
-    AbstractMapSerializer mapSerializer = (AbstractMapSerializer) 
classInfo.getSerializer();
+    MapLikeSerializer mapSerializer = (MapLikeSerializer) 
classInfo.getSerializer();
     try {
       mapSerializer.setKeySerializer(keyClassInfo.getSerializer());
       mapSerializer.write(buffer, fieldValue);
@@ -291,7 +291,7 @@ public final class CompatibleSerializer<T> extends 
CompatibleSerializerBase<T> {
     // following write is consistent with `BaseSeqCodecBuilder.serializeForMap`
     ClassInfo classInfo = fieldInfo.getClassInfo(fieldValue.getClass());
     classResolver.writeClassInfo(buffer, classInfo);
-    AbstractMapSerializer mapSerializer = (AbstractMapSerializer) 
classInfo.getSerializer();
+    MapLikeSerializer mapSerializer = (MapLikeSerializer) 
classInfo.getSerializer();
     try {
       mapSerializer.setValueSerializer(valueClassInfo.getSerializer());
       mapSerializer.write(buffer, fieldValue);
diff --git 
a/java/fory-core/src/main/java/org/apache/fory/serializer/collection/AbstractCollectionSerializer.java
 
b/java/fory-core/src/main/java/org/apache/fory/serializer/collection/CollectionLikeSerializer.java
similarity index 98%
rename from 
java/fory-core/src/main/java/org/apache/fory/serializer/collection/AbstractCollectionSerializer.java
rename to 
java/fory-core/src/main/java/org/apache/fory/serializer/collection/CollectionLikeSerializer.java
index 561f5ac98..29568d4d1 100644
--- 
a/java/fory-core/src/main/java/org/apache/fory/serializer/collection/AbstractCollectionSerializer.java
+++ 
b/java/fory-core/src/main/java/org/apache/fory/serializer/collection/CollectionLikeSerializer.java
@@ -39,7 +39,7 @@ import org.apache.fory.util.Preconditions;
  * Serializer for all collection like object. All collection serializer should 
extend this class.
  */
 @SuppressWarnings({"unchecked", "rawtypes"})
-public abstract class AbstractCollectionSerializer<T> extends Serializer<T> {
+public abstract class CollectionLikeSerializer<T> extends Serializer<T> {
   private MethodHandle constructor;
   private int numElements;
   protected final boolean supportCodegenHook;
@@ -58,11 +58,11 @@ public abstract class AbstractCollectionSerializer<T> 
extends Serializer<T> {
   // interpreter and jit mode although it seems unnecessary.
   // With elements header, we can write this element class only once, the cost 
won't be too much.
 
-  public AbstractCollectionSerializer(Fory fory, Class<T> cls) {
+  public CollectionLikeSerializer(Fory fory, Class<T> cls) {
     this(fory, cls, !ReflectionUtils.isDynamicGeneratedCLass(cls));
   }
 
-  public AbstractCollectionSerializer(Fory fory, Class<T> cls, boolean 
supportCodegenHook) {
+  public CollectionLikeSerializer(Fory fory, Class<T> cls, boolean 
supportCodegenHook) {
     super(fory, cls);
     this.supportCodegenHook = supportCodegenHook;
     elementClassInfoHolder = fory.getClassResolver().nilClassInfoHolder();
@@ -70,7 +70,7 @@ public abstract class AbstractCollectionSerializer<T> extends 
Serializer<T> {
     binding = SerializationBinding.createBinding(fory);
   }
 
-  public AbstractCollectionSerializer(
+  public CollectionLikeSerializer(
       Fory fory, Class<T> cls, boolean supportCodegenHook, boolean immutable) {
     super(fory, cls, immutable);
     this.supportCodegenHook = supportCodegenHook;
diff --git 
a/java/fory-core/src/main/java/org/apache/fory/serializer/collection/CollectionSerializer.java
 
b/java/fory-core/src/main/java/org/apache/fory/serializer/collection/CollectionSerializer.java
index 97496aa0a..517577506 100644
--- 
a/java/fory-core/src/main/java/org/apache/fory/serializer/collection/CollectionSerializer.java
+++ 
b/java/fory-core/src/main/java/org/apache/fory/serializer/collection/CollectionSerializer.java
@@ -26,7 +26,7 @@ import org.apache.fory.util.Preconditions;
 
 /** Base serializer for all java collections. */
 @SuppressWarnings({"unchecked", "rawtypes"})
-public class CollectionSerializer<T extends Collection> extends 
AbstractCollectionSerializer<T> {
+public class CollectionSerializer<T extends Collection> extends 
CollectionLikeSerializer<T> {
   public CollectionSerializer(Fory fory, Class<T> type) {
     super(fory, type);
   }
diff --git 
a/java/fory-core/src/main/java/org/apache/fory/serializer/collection/CollectionSerializers.java
 
b/java/fory-core/src/main/java/org/apache/fory/serializer/collection/CollectionSerializers.java
index c77d01b56..fa0b2ce7c 100644
--- 
a/java/fory-core/src/main/java/org/apache/fory/serializer/collection/CollectionSerializers.java
+++ 
b/java/fory-core/src/main/java/org/apache/fory/serializer/collection/CollectionSerializers.java
@@ -457,8 +457,7 @@ public class CollectionSerializers {
     @Override
     public Collection newCollection(MemoryBuffer buffer) {
       final ClassInfo mapClassInfo = 
fory.getClassResolver().readClassInfo(buffer);
-      final AbstractMapSerializer mapSerializer =
-          (AbstractMapSerializer) mapClassInfo.getSerializer();
+      final MapLikeSerializer mapSerializer = (MapLikeSerializer) 
mapClassInfo.getSerializer();
       RefResolver refResolver = fory.getRefResolver();
       // It's possible that elements or nested fields has circular ref to set.
       int refId = refResolver.lastPreservedRefId();
@@ -487,8 +486,8 @@ public class CollectionSerializers {
       assert !fory.isCrossLanguage();
       Map<?, Boolean> map =
           (Map<?, Boolean>) Platform.getObject(originCollection, 
MAP_FIELD_OFFSET);
-      AbstractMapSerializer mapSerializer =
-          (AbstractMapSerializer) 
fory.getClassResolver().getSerializer(map.getClass());
+      MapLikeSerializer mapSerializer =
+          (MapLikeSerializer) 
fory.getClassResolver().getSerializer(map.getClass());
       Map newMap = mapSerializer.newMap(map);
       return Collections.newSetFromMap(newMap);
     }
@@ -497,7 +496,7 @@ public class CollectionSerializers {
     public Collection onCollectionWrite(MemoryBuffer buffer, Set<?> value) {
       final Map<?, Boolean> map = (Map<?, Boolean>) Platform.getObject(value, 
MAP_FIELD_OFFSET);
       final ClassInfo classInfo = 
fory.getClassResolver().getClassInfo(map.getClass());
-      AbstractMapSerializer mapSerializer = (AbstractMapSerializer) 
classInfo.getSerializer();
+      MapLikeSerializer mapSerializer = (MapLikeSerializer) 
classInfo.getSerializer();
       fory.getClassResolver().writeClassInfo(buffer, classInfo);
       if (mapSerializer.supportCodegenHook) {
         buffer.writeBoolean(true);
@@ -686,8 +685,7 @@ public class CollectionSerializers {
    * serializer won't use element generics and doesn't support JIT, 
performance won't be the best,
    * but the correctness can be ensured.
    */
-  public static final class DefaultJavaCollectionSerializer<T>
-      extends AbstractCollectionSerializer<T> {
+  public static final class DefaultJavaCollectionSerializer<T> extends 
CollectionLikeSerializer<T> {
     private Serializer<T> dataSerializer;
 
     public DefaultJavaCollectionSerializer(Fory fory, Class<T> cls) {
@@ -734,7 +732,7 @@ public class CollectionSerializers {
 
   /** Collection serializer for class with JDK custom serialization methods 
defined. */
   public static final class JDKCompatibleCollectionSerializer<T>
-      extends AbstractCollectionSerializer<T> {
+      extends CollectionLikeSerializer<T> {
     private final Serializer serializer;
 
     public JDKCompatibleCollectionSerializer(Fory fory, Class<T> cls) {
diff --git 
a/java/fory-core/src/main/java/org/apache/fory/serializer/collection/AbstractMapSerializer.java
 
b/java/fory-core/src/main/java/org/apache/fory/serializer/collection/MapLikeSerializer.java
similarity index 99%
rename from 
java/fory-core/src/main/java/org/apache/fory/serializer/collection/AbstractMapSerializer.java
rename to 
java/fory-core/src/main/java/org/apache/fory/serializer/collection/MapLikeSerializer.java
index c3866bf88..c7aa2c59d 100644
--- 
a/java/fory-core/src/main/java/org/apache/fory/serializer/collection/AbstractMapSerializer.java
+++ 
b/java/fory-core/src/main/java/org/apache/fory/serializer/collection/MapLikeSerializer.java
@@ -55,7 +55,7 @@ import org.apache.fory.type.TypeUtils;
 
 /** Serializer for all map-like objects. */
 @SuppressWarnings({"unchecked", "rawtypes"})
-public abstract class AbstractMapSerializer<T> extends Serializer<T> {
+public abstract class MapLikeSerializer<T> extends Serializer<T> {
   public static final int MAX_CHUNK_SIZE = 255;
 
   protected MethodHandle constructor;
@@ -83,16 +83,15 @@ public abstract class AbstractMapSerializer<T> extends 
Serializer<T> {
   private final TypeResolver typeResolver;
   protected final SerializationBinding binding;
 
-  public AbstractMapSerializer(Fory fory, Class<T> cls) {
+  public MapLikeSerializer(Fory fory, Class<T> cls) {
     this(fory, cls, !ReflectionUtils.isDynamicGeneratedCLass(cls));
   }
 
-  public AbstractMapSerializer(Fory fory, Class<T> cls, boolean 
supportCodegenHook) {
+  public MapLikeSerializer(Fory fory, Class<T> cls, boolean 
supportCodegenHook) {
     this(fory, cls, supportCodegenHook, false);
   }
 
-  public AbstractMapSerializer(
-      Fory fory, Class<T> cls, boolean supportCodegenHook, boolean immutable) {
+  public MapLikeSerializer(Fory fory, Class<T> cls, boolean 
supportCodegenHook, boolean immutable) {
     super(fory, cls, immutable);
     this.typeResolver = fory.isCrossLanguage() ? fory.getXtypeResolver() : 
fory.getClassResolver();
     this.supportCodegenHook = supportCodegenHook;
diff --git 
a/java/fory-core/src/main/java/org/apache/fory/serializer/collection/MapSerializer.java
 
b/java/fory-core/src/main/java/org/apache/fory/serializer/collection/MapSerializer.java
index ab3010ff4..8a648f5d8 100644
--- 
a/java/fory-core/src/main/java/org/apache/fory/serializer/collection/MapSerializer.java
+++ 
b/java/fory-core/src/main/java/org/apache/fory/serializer/collection/MapSerializer.java
@@ -25,7 +25,7 @@ import org.apache.fory.memory.MemoryBuffer;
 
 /** Base serializer for all java maps. */
 @SuppressWarnings({"unchecked", "rawtypes"})
-public class MapSerializer<T extends Map> extends AbstractMapSerializer<T> {
+public class MapSerializer<T extends Map> extends MapLikeSerializer<T> {
   public MapSerializer(Fory fory, Class<T> cls) {
     super(fory, cls);
   }
diff --git 
a/java/fory-core/src/main/java/org/apache/fory/serializer/collection/MapSerializers.java
 
b/java/fory-core/src/main/java/org/apache/fory/serializer/collection/MapSerializers.java
index 520be2d8c..1b7112813 100644
--- 
a/java/fory-core/src/main/java/org/apache/fory/serializer/collection/MapSerializers.java
+++ 
b/java/fory-core/src/main/java/org/apache/fory/serializer/collection/MapSerializers.java
@@ -377,7 +377,7 @@ public class MapSerializers {
    * won't use element generics and doesn't support JIT, performance won't be 
the best, but the
    * correctness can be ensured.
    */
-  public static final class DefaultJavaMapSerializer<T> extends 
AbstractMapSerializer<T> {
+  public static final class DefaultJavaMapSerializer<T> extends 
MapLikeSerializer<T> {
     private Serializer<T> dataSerializer;
 
     public DefaultJavaMapSerializer(Fory fory, Class<T> cls) {
@@ -427,7 +427,7 @@ public class MapSerializers {
   }
 
   /** Map serializer for class with JDK custom serialization methods defined. 
*/
-  public static class JDKCompatibleMapSerializer<T> extends 
AbstractMapSerializer<T> {
+  public static class JDKCompatibleMapSerializer<T> extends 
MapLikeSerializer<T> {
     private final Serializer serializer;
 
     public JDKCompatibleMapSerializer(Fory fory, Class<T> cls) {
diff --git 
a/java/fory-core/src/main/java/org/apache/fory/serializer/scala/SingletonCollectionSerializer.java
 
b/java/fory-core/src/main/java/org/apache/fory/serializer/scala/SingletonCollectionSerializer.java
index 7b4c5a612..548ab6521 100644
--- 
a/java/fory-core/src/main/java/org/apache/fory/serializer/scala/SingletonCollectionSerializer.java
+++ 
b/java/fory-core/src/main/java/org/apache/fory/serializer/scala/SingletonCollectionSerializer.java
@@ -24,7 +24,7 @@ import java.util.Collection;
 import org.apache.fory.Fory;
 import org.apache.fory.memory.MemoryBuffer;
 import org.apache.fory.memory.Platform;
-import org.apache.fory.serializer.collection.AbstractCollectionSerializer;
+import org.apache.fory.serializer.collection.CollectionLikeSerializer;
 import org.apache.fory.util.GraalvmSupport;
 import org.apache.fory.util.Preconditions;
 
@@ -34,7 +34,7 @@ import org.apache.fory.util.Preconditions;
  * an object.
  */
 @SuppressWarnings("rawtypes")
-public class SingletonCollectionSerializer extends 
AbstractCollectionSerializer {
+public class SingletonCollectionSerializer extends CollectionLikeSerializer {
   private final Field field;
   private Object base = null;
   private long offset = -1;
diff --git 
a/java/fory-core/src/main/java/org/apache/fory/serializer/scala/SingletonMapSerializer.java
 
b/java/fory-core/src/main/java/org/apache/fory/serializer/scala/SingletonMapSerializer.java
index 35a3803d2..07b954f95 100644
--- 
a/java/fory-core/src/main/java/org/apache/fory/serializer/scala/SingletonMapSerializer.java
+++ 
b/java/fory-core/src/main/java/org/apache/fory/serializer/scala/SingletonMapSerializer.java
@@ -24,7 +24,7 @@ import java.util.Map;
 import org.apache.fory.Fory;
 import org.apache.fory.memory.MemoryBuffer;
 import org.apache.fory.memory.Platform;
-import org.apache.fory.serializer.collection.AbstractMapSerializer;
+import org.apache.fory.serializer.collection.MapLikeSerializer;
 import org.apache.fory.util.GraalvmSupport;
 import org.apache.fory.util.Preconditions;
 
@@ -34,7 +34,7 @@ import org.apache.fory.util.Preconditions;
  * object.
  */
 @SuppressWarnings("rawtypes")
-public class SingletonMapSerializer extends AbstractMapSerializer {
+public class SingletonMapSerializer extends MapLikeSerializer {
   private final Field field;
   private Object base = null;
   private long offset = -1;
diff --git 
a/kotlin/src/main/kotlin/org/apache/fory/serializer/kotlin/CollectionSerializer.kt
 
b/kotlin/src/main/kotlin/org/apache/fory/serializer/kotlin/CollectionSerializer.kt
index 328273785..6eb8b9175 100644
--- 
a/kotlin/src/main/kotlin/org/apache/fory/serializer/kotlin/CollectionSerializer.kt
+++ 
b/kotlin/src/main/kotlin/org/apache/fory/serializer/kotlin/CollectionSerializer.kt
@@ -21,14 +21,14 @@ package org.apache.fory.serializer.kotlin
 
 import org.apache.fory.Fory
 import org.apache.fory.memory.MemoryBuffer
-import org.apache.fory.serializer.collection.AbstractCollectionSerializer
+import org.apache.fory.serializer.collection.CollectionLikeSerializer
 
 /** Serializer for kotlin collections. */
 @Suppress("UNCHECKED_CAST")
 public abstract class AbstractKotlinCollectionSerializer<E, T : Iterable<E>>(
   fory: Fory,
   cls: Class<T>
-) : AbstractCollectionSerializer<T>(fory, cls) {
+) : CollectionLikeSerializer<T>(fory, cls) {
   abstract override fun onCollectionWrite(buffer: MemoryBuffer, value: T): 
Collection<E>
 
   override fun read(buffer: MemoryBuffer): T {
diff --git 
a/scala/src/main/scala/org/apache/fory/serializer/scala/CollectionSerializer.scala
 
b/scala/src/main/scala/org/apache/fory/serializer/scala/CollectionSerializer.scala
index cbae7546d..b9274a1ec 100644
--- 
a/scala/src/main/scala/org/apache/fory/serializer/scala/CollectionSerializer.scala
+++ 
b/scala/src/main/scala/org/apache/fory/serializer/scala/CollectionSerializer.scala
@@ -21,7 +21,7 @@ package org.apache.fory.serializer.scala
 
 import org.apache.fory.Fory
 import org.apache.fory.memory.MemoryBuffer
-import org.apache.fory.serializer.collection.AbstractCollectionSerializer
+import org.apache.fory.serializer.collection.CollectionLikeSerializer
 
 import java.util
 import scala.collection.{Factory, Iterable, mutable}
@@ -44,7 +44,7 @@ import scala.collection.{Factory, Iterable, mutable}
  * <li>`onCollectionRead`: create scala collection from builder.</li>
  */
 abstract class AbstractScalaCollectionSerializer[A, T <: Iterable[A]](fory: 
Fory, cls: Class[T])
-  extends AbstractCollectionSerializer[T](fory, cls) {
+  extends CollectionLikeSerializer[T](fory, cls) {
   override def onCollectionWrite(buffer: MemoryBuffer, value: T): 
util.Collection[_]
 
   override def read(buffer: MemoryBuffer): T = {
diff --git 
a/scala/src/main/scala/org/apache/fory/serializer/scala/MapSerializer.scala 
b/scala/src/main/scala/org/apache/fory/serializer/scala/MapSerializer.scala
index b8f577825..b528ade55 100644
--- a/scala/src/main/scala/org/apache/fory/serializer/scala/MapSerializer.scala
+++ b/scala/src/main/scala/org/apache/fory/serializer/scala/MapSerializer.scala
@@ -22,7 +22,7 @@ package org.apache.fory.serializer.scala
 import org.apache.fory.Fory
 import org.apache.fory.collection.MapEntry
 import org.apache.fory.memory.MemoryBuffer
-import org.apache.fory.serializer.collection.AbstractMapSerializer
+import org.apache.fory.serializer.collection.MapLikeSerializer
 
 import java.util
 import scala.collection.{Factory, mutable}
@@ -45,7 +45,7 @@ import scala.collection.{Factory, mutable}
  * <li>`onMapRead`: create scala map from builder.</li>
  */
 abstract class AbstractScalaMapSerializer[K, V, T](fory: Fory, cls: Class[T])
-  extends AbstractMapSerializer[T](fory, cls) {
+  extends MapLikeSerializer[T](fory, cls) {
   def onMapWrite(buffer: MemoryBuffer, value: T): util.Map[_, _]
 
   override def read(buffer: MemoryBuffer): T = {
diff --git 
a/scala/src/main/scala/org/apache/fory/serializer/scala/RangeSerializer.scala 
b/scala/src/main/scala/org/apache/fory/serializer/scala/RangeSerializer.scala
index 5425a518a..32b672277 100644
--- 
a/scala/src/main/scala/org/apache/fory/serializer/scala/RangeSerializer.scala
+++ 
b/scala/src/main/scala/org/apache/fory/serializer/scala/RangeSerializer.scala
@@ -23,7 +23,7 @@ import org.apache.fory.Fory
 import org.apache.fory.memory.MemoryBuffer
 import org.apache.fory.reflect.FieldAccessor
 import org.apache.fory.serializer.Serializer
-import org.apache.fory.serializer.collection.AbstractCollectionSerializer
+import org.apache.fory.serializer.collection.CollectionLikeSerializer
 import org.apache.fory.util.unsafe._JDKAccess
 
 import java.lang.invoke.{MethodHandle, MethodHandles}
@@ -31,7 +31,7 @@ import java.util
 import scala.collection.immutable.NumericRange
 
 class RangeSerializer[T <: Range](fory: Fory, cls: Class[T])
-  extends AbstractCollectionSerializer[T](fory, cls, false) {
+  extends CollectionLikeSerializer[T](fory, cls, false) {
 
   override def write(buffer: MemoryBuffer, value: T): Unit = {
     buffer.writeVarInt32(value.start)
@@ -66,7 +66,7 @@ private object RangeUtils {
 
 
 class NumericRangeSerializer[A, T <: NumericRange[A]](fory: Fory, cls: 
Class[T])
-  extends AbstractCollectionSerializer[T](fory, cls, false) {
+  extends CollectionLikeSerializer[T](fory, cls, false) {
   private val ctr = RangeUtils.lookupCache.get(cls)
   private val getter = 
FieldAccessor.createAccessor(cls.getDeclaredFields.find(f => f.getType == 
classOf[Integral[?]]).get)
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to