42 lines
1.7 KiB
Java
42 lines
1.7 KiB
Java
package com.esotericsoftware.kryo.factories;
|
|
|
|
import c.d.b.a.a;
|
|
import com.esotericsoftware.kryo.Kryo;
|
|
import com.esotericsoftware.kryo.Serializer;
|
|
import com.esotericsoftware.kryo.util.Util;
|
|
public class ReflectionSerializerFactory implements SerializerFactory {
|
|
private final Class<? extends Serializer> serializerClass;
|
|
|
|
public ReflectionSerializerFactory(Class<? extends Serializer> cls) {
|
|
this.serializerClass = cls;
|
|
}
|
|
|
|
public static Serializer makeSerializer(Kryo kryo, Class<? extends Serializer> cls, Class<?> cls2) {
|
|
try {
|
|
return (Serializer) cls.getConstructor(Kryo.class, Class.class).newInstance(kryo, cls2);
|
|
} catch (NoSuchMethodException unused) {
|
|
try {
|
|
return (Serializer) cls.getConstructor(Kryo.class).newInstance(kryo);
|
|
} catch (NoSuchMethodException unused2) {
|
|
try {
|
|
return (Serializer) cls.getConstructor(Class.class).newInstance(cls2);
|
|
} catch (NoSuchMethodException unused3) {
|
|
try {
|
|
return (Serializer) cls.newInstance();
|
|
} catch (Exception e) {
|
|
StringBuilder L = a.L("Unable to create serializer \"");
|
|
L.append(cls.getName());
|
|
L.append("\" for class: ");
|
|
L.append(Util.className(cls2));
|
|
throw new IllegalArgumentException(L.toString(), e);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override // com.esotericsoftware.kryo.factories.SerializerFactory
|
|
public Serializer makeSerializer(Kryo kryo, Class<?> cls) {
|
|
return makeSerializer(kryo, this.serializerClass, cls);
|
|
}
|
|
}
|