public static Optional<Object> getFieldValue(Object target, String fieldName) {
        if (target == null) {
            return Optional.empty();
        }
        return getFieldValueByClazz(target.getClass(), target, fieldName);
    }
@Test
    public void getFieldValue() {
        final TestReflect reflect = new TestReflect();
        final Optional<Object> finalField = ReflectUtils.getFieldValue(reflect, "finalField");
        Assert.assertTrue(finalField.isPresent() && finalField.get() instanceof String);
        Assert.assertEquals(finalField.get(), reflect.finalField);
        final Optional<Object> reflectUtils = ReflectUtils.buildWithConstructor(ReflectUtils.class, null, null);
        Assert.assertTrue(reflectUtils.isPresent());
        final Optional<Object> fieldCache = ReflectUtils.getFieldValue(reflectUtils.get(), "FIELD_CACHE");
        Assert.assertTrue(fieldCache.isPresent() && fieldCache.get() instanceof Map);
        Assert.assertFalse(((Map<?, ?>) fieldCache.get()).isEmpty());
        final Optional<Object> fieldValue = ReflectUtils.getFieldValue(null, null);
        Assert.assertFalse(fieldValue.isPresent());
    }