in java/fury-core/src/main/java/org/apache/fury/resolver/ClassResolver.java [618:653]
public boolean isMonomorphic(Class<?> clz) {
if (fury.isCrossLanguage()) {
if (TypeUtils.unwrap(clz).isPrimitive() || clz.isEnum() || clz == String.class) {
return true;
}
if (clz.isArray() && TypeUtils.getArrayComponent(clz).isPrimitive()) {
return true;
}
ClassInfo classInfo = xtypeResolver.getClassInfo(clz, false);
if (classInfo != null) {
if (classInfo.serializer instanceof TimeSerializers.TimeSerializer) {
return true;
}
if (classInfo.serializer instanceof TimeSerializers.ImmutableTimeSerializer) {
return true;
}
}
return false;
}
if (fury.getConfig().isMetaShareEnabled()) {
// can't create final map/collection type using TypeUtils.mapOf(TypeToken<K>,
// TypeToken<V>)
if (!ReflectionUtils.isMonomorphic(clz)) {
return false;
}
if (Map.class.isAssignableFrom(clz) || Collection.class.isAssignableFrom(clz)) {
return false;
}
if (clz.isArray()) {
Class<?> component = TypeUtils.getArrayComponent(clz);
return isMonomorphic(component);
}
return (isInnerClass(clz) || clz.isEnum());
}
return ReflectionUtils.isMonomorphic(clz);
}