public boolean isMonomorphic()

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);
  }