public static void setFieldValue(Object obj, String fieldName, Object value) throws RuntimeException {
        Assert.notNull(obj);
        Assert.notBlank(fieldName);
        final Field field = getField((obj instanceof Class) ? (Class<?>) obj : obj.getClass(), fieldName);
        Assert.notNull(field, "Field [" + fieldName + "] is not exist in [" + obj.getClass().getName() + "]");
        setFieldValue(obj, field, value);
    }
@Test
    public void setFieldValueTest() {
        TestClass testClass = new TestClass();
        ReflectUtil.setFieldValue(testClass, "field", "fieldVal");
        Assert.assertEquals("fieldVal", testClass.getField());

        Field privateField = ReflectUtil.getField(TestSubClass.class, "privateField");
        ReflectUtil.setFieldValue(testClass, privateField, "privateFieldVal");
        Assert.assertEquals("privateFieldVal", testClass.getPrivateField());

    }