private static T unsafeCreate()

in twill-core/src/main/java/org/apache/twill/internal/utils/Instances.java [87:106]


  private static <T> T unsafeCreate(Class<T> clz) throws InvocationTargetException, IllegalAccessException {
    T instance = (T) UNSAFE_NEW_INSTANCE.invoke(UNSAFE, clz);

    for (TypeToken<?> type : TypeToken.of(clz).getTypes().classes()) {
      if (Object.class.equals(type.getRawType())) {
        break;
      }
      for (Field field : type.getRawType().getDeclaredFields()) {
        if (Modifier.isStatic(field.getModifiers())) {
          continue;
        }
        if (!field.isAccessible()) {
          field.setAccessible(true);
        }
        field.set(instance, Defaults.defaultValue(field.getType()));
      }
    }

    return instance;
  }