guava/src/com/google/common/base/Defaults.java
@SuppressWarnings("unchecked")
  public static <T> @Nullable T defaultValue(Class<T> type) {
    checkNotNull(type);
    if (type == boolean.class) {
      return (T) Boolean.FALSE;
    } else if (type == char.class) {
      return (T) Character.valueOf('\0');
    } else if (type == byte.class) {
      return (T) Byte.valueOf((byte) 0);
    } else if (type == short.class) {
      return (T) Short.valueOf((short) 0);
    } else if (type == int.class) {
      return (T) Integer.valueOf(0);
    } else if (type == long.class) {
      return (T) Long.valueOf(0L);
    } else if (type == float.class) {
      return (T) FLOAT_DEFAULT;
    } else if (type == double.class) {
      return (T) DOUBLE_DEFAULT;
    } else {
      return null;
    }
  }
@SuppressWarnings("unchecked")
  public static <T> @Nullable T defaultValue(Class<T> type) {
    checkNotNull(type);
    if (type == boolean.class) {
      return (T) Boolean.FALSE;
    } else if (type == char.class) {
      return (T) Character.valueOf('\0');
    } else if (type == byte.class) {
      return (T) Byte.valueOf((byte) 0);
    } else if (type == short.class) {
      return (T) Short.valueOf((short) 0);
    } else if (type == int.class) {
      return (T) Integer.valueOf(0);
    } else if (type == long.class) {
      return (T) Long.valueOf(0L);
    } else if (type == float.class) {
      return (T) FLOAT_DEFAULT;
    } else if (type == double.class) {
      return (T) DOUBLE_DEFAULT;
    } else {
      return null;
    }
  }
Returns the default value of {@code type} as defined by JLS --- {@code 0} for numbers, {@code
false} for {@code boolean} and {@code '\0'} for {@code char}. For non-primitive types and
{@code void}, {@code null} is returned.