public static Object getDefaultValue(Class<?> clazz) {
        if (Objects.isNull(clazz) || !clazz.isPrimitive()) {
            return null;
        }
        if (long.class.isAssignableFrom(clazz)) {
            return 0L;
        } else if (int.class.isAssignableFrom(clazz)) {
            return 0;
        } else if (short.class.isAssignableFrom(clazz)) {
            return (short) 0;
        } else if (char.class.isAssignableFrom(clazz)) {
            return (char) 0;
        } else if (byte.class.isAssignableFrom(clazz)) {
            return (byte) 0;
        } else if (double.class.isAssignableFrom(clazz)) {
            return 0D;
        } else if (float.class.isAssignableFrom(clazz)) {
            return 0f;
        } else if (boolean.class.isAssignableFrom(clazz)) {
            return false;
        }
        return null;
    }
@Test
    public void getDefaultValueTest() {
        Object defaultValue = ReflectUtil.getDefaultValue(Long.class);
        Assert.assertNull(defaultValue);
        Object primitiveValueLong = ReflectUtil.getDefaultValue(long.class);
        Assert.assertEquals(0L, primitiveValueLong);
        Object primitiveValueInt = ReflectUtil.getDefaultValue(int.class);
        Assert.assertEquals(0, primitiveValueInt);
        Object primitiveValueFloat = ReflectUtil.getDefaultValue(float.class);
        Assert.assertEquals(0f, primitiveValueFloat);
        Object primitiveValueShort = ReflectUtil.getDefaultValue(short.class);
        Assert.assertEquals((short) 0, primitiveValueShort);
        Object primitiveValueChar = ReflectUtil.getDefaultValue(char.class);
        Assert.assertEquals((char) 0, primitiveValueChar);
        Object primitiveValueDouble = ReflectUtil.getDefaultValue(double.class);
        Assert.assertEquals(0D, primitiveValueDouble);
        Object primitiveValueBoolean = ReflectUtil.getDefaultValue(boolean.class);
        Assert.assertEquals(false, primitiveValueBoolean);
    }