diff --git a/fine-jackson/src/com/fr/third/fasterxml/jackson/databind/type/ClassFactory.java b/fine-jackson/src/com/fr/third/fasterxml/jackson/databind/type/ClassFactory.java new file mode 100644 index 000000000..3b8183486 --- /dev/null +++ b/fine-jackson/src/com/fr/third/fasterxml/jackson/databind/type/ClassFactory.java @@ -0,0 +1,11 @@ +package com.fr.third.fasterxml.jackson.databind.type; + +/** + * Created by juhaoyu on 2018/11/5. + */ +public interface ClassFactory { + + Class classForName(String className); + + Class classForName(String className, ClassLoader classLoader); +} \ No newline at end of file diff --git a/fine-jackson/src/com/fr/third/fasterxml/jackson/databind/type/TypeFactory.java b/fine-jackson/src/com/fr/third/fasterxml/jackson/databind/type/TypeFactory.java index 1978466a9..9d9455cb6 100644 --- a/fine-jackson/src/com/fr/third/fasterxml/jackson/databind/type/TypeFactory.java +++ b/fine-jackson/src/com/fr/third/fasterxml/jackson/databind/type/TypeFactory.java @@ -138,12 +138,19 @@ public final class TypeFactory */ protected final ClassLoader _classLoader; + private ClassFactory classFactory; + /* /********************************************************** /* Life-cycle /********************************************************** */ + public void setClassFactory(ClassFactory classFactory) { + + this.classFactory = classFactory; + } + private TypeFactory() { _parser = new TypeParser(this); _modifiers = null; @@ -278,10 +285,17 @@ public final class TypeFactory protected Class classForName(String name, boolean initialize, ClassLoader loader) throws ClassNotFoundException { + if (classFactory != null) { + return classFactory.classForName(name, loader); + } return Class.forName(name, true, loader); } protected Class classForName(String name) throws ClassNotFoundException { + + if (classFactory != null) { + return classFactory.classForName(name); + } return Class.forName(name); }