ConvertFactory优化

This commit is contained in:
redkale
2023-01-31 17:05:26 +08:00
parent be5da6e287
commit c6a1d584ea

View File

@@ -665,6 +665,15 @@ public abstract class ConvertFactory<R extends Reader, W extends Writer> {
continue;
}
Encodeable encoder = null;
try {
Field instanceField = enClazz.getField("instance");
if (instanceField.getType() == enClazz && Modifier.isStatic(instanceField.getModifiers())) {
RedkaleClassLoader.putReflectionField("instance", instanceField);
encoder = (Encodeable) instanceField.get(null);
}
} catch (Exception e) {
}
if (encoder == null) {
Creator<? extends Encodeable> creator = Creator.create(enClazz);
Class[] paramTypes = creator.paramTypes();
if (paramTypes.length == 0) {
@@ -689,6 +698,7 @@ public abstract class ConvertFactory<R extends Reader, W extends Writer> {
throw new ConvertException(enClazz + " not found public empty-parameter Constructor");
}
RedkaleClassLoader.putReflectionPublicConstructors(enClazz, enClazz.getName());
}
if (encoderList == null) {
encoderList = new ArrayList<>();
}
@@ -716,6 +726,15 @@ public abstract class ConvertFactory<R extends Reader, W extends Writer> {
continue;
}
Decodeable decoder = null;
try {
Field instanceField = deClazz.getField("instance");
if (instanceField.getType() == deClazz && Modifier.isStatic(instanceField.getModifiers())) {
RedkaleClassLoader.putReflectionField("instance", instanceField);
decoder = (Decodeable) instanceField.get(null);
}
} catch (Exception e) {
}
if (decoder == null) {
Creator<? extends Decodeable> creator = Creator.create(deClazz);
Class[] paramTypes = creator.paramTypes();
if (paramTypes.length == 0) {
@@ -740,6 +759,7 @@ public abstract class ConvertFactory<R extends Reader, W extends Writer> {
throw new ConvertException(deClazz + " not found public empty-parameter Constructor");
}
RedkaleClassLoader.putReflectionPublicConstructors(deClazz, deClazz.getName());
}
if (decoderList == null) {
decoderList = new ArrayList<>();
}