public static Optional<Object> buildWithConstructor(String className, Class<?>[] paramsTypes, Object[] params) {
        final Class<?> clazz = loadClass(className).orElse(null);
        return buildWithConstructor(clazz, paramsTypes, params);
    }
@Test
    public void buildWithConstructor() {
        final Optional<Object> result = ReflectUtils.buildWithConstructor(TestReflect.class.getName(), null, null);
        Assert.assertTrue(result.isPresent() && result.get() instanceof TestReflect);
        final Optional<Object> paramsResult = ReflectUtils.buildWithConstructor(TestReflect.class.getName(),
                new Class[] {int.class, int.class},new Object[] {1, 2});
        Assert.assertTrue(paramsResult.isPresent() && paramsResult.get() instanceof TestReflect);
        final TestReflect reflect = (TestReflect) paramsResult.get();
        Assert.assertEquals(reflect.x + reflect.y, 3);
    }