diff --git a/core/src/main/java/com/alibaba/fastjson2/SymbolTable.java b/core/src/main/java/com/alibaba/fastjson2/SymbolTable.java index b83f2f957..afc13a717 100644 --- a/core/src/main/java/com/alibaba/fastjson2/SymbolTable.java +++ b/core/src/main/java/com/alibaba/fastjson2/SymbolTable.java @@ -15,6 +15,24 @@ public final class SymbolTable { private final long[] hashCodes; private final long[] hashCodesOrigin; + /** + * Create a symbol table + * + * @param input input + * @since 2.0.58 + */ + public SymbolTable(Class... input) { + this(classNames(input)); + } + + private static String[] classNames(Class... input) { + String[] names = new String[input.length]; + for (int i = 0; i < input.length; i++) { + names[i] = input[i].getName(); + } + return names; + } + public SymbolTable(String... input) { Set set = new TreeSet<>(Arrays.asList(input)); names = new String[set.size()]; diff --git a/core/src/test/java/com/alibaba/fastjson2/SymbolTableTest.java b/core/src/test/java/com/alibaba/fastjson2/SymbolTableTest.java new file mode 100644 index 000000000..bbc46aead --- /dev/null +++ b/core/src/test/java/com/alibaba/fastjson2/SymbolTableTest.java @@ -0,0 +1,14 @@ +package com.alibaba.fastjson2; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class SymbolTableTest { + @Test + public void test() { + SymbolTable symbolTable = new SymbolTable(Integer.class, Long.class); + assertEquals(Integer.class.getName(), symbolTable.getName(1)); + assertEquals(Long.class.getName(), symbolTable.getName(2)); + } +}