This commit is contained in:
Looly 2020-05-26 10:22:59 +08:00
parent e9400766a9
commit df58ad5eff
5 changed files with 18 additions and 13 deletions

View File

@ -614,7 +614,7 @@ public class BeanUtil {
* @return 目标对象 * @return 目标对象
*/ */
public static <T> T copyProperties(Object source, Class<T> tClass) { public static <T> T copyProperties(Object source, Class<T> tClass) {
T target = ReflectUtil.newInstance(tClass); T target = ReflectUtil.newInstanceIfPossible(tClass);
copyProperties(source, target, CopyOptions.create()); copyProperties(source, target, CopyOptions.create());
return target; return target;
} }

View File

@ -57,7 +57,10 @@ public class BeanValueProvider implements ValueProvider<String> {
} }
// 尝试将结果转换为目标类型如果转换失败返回原类型 // 尝试将结果转换为目标类型如果转换失败返回原类型
result = Convert.convertWithCheck(valueType,result, result, ignoreError); final Object convertValue = Convert.convertWithCheck(valueType,result, null, ignoreError);
if(null != convertValue){
result = convertValue;
}
} }
} }
return result; return result;

View File

@ -58,7 +58,8 @@ public abstract class AbstractConverter<T> implements Converter<T>, Serializable
T result = convertInternal(value); T result = convertInternal(value);
return ((null == result) ? defaultValue : result); return ((null == result) ? defaultValue : result);
} else { } else {
throw new IllegalArgumentException(StrUtil.format("Default value [{}] is not the instance of [{}]", defaultValue, targetType)); throw new IllegalArgumentException(
StrUtil.format("Default value [{}]({}) is not the instance of [{}]", defaultValue, defaultValue.getClass(), targetType));
} }
} }

View File

@ -783,7 +783,7 @@ public class URLUtil {
* <p> * <p>
* Data URI的格式规范 * Data URI的格式规范
* <pre> * <pre>
* data:[<mime type>][;charset=<charset>][;<encoding>],<encoded data> * data:[&lt;mime type&gt;][;charset=&lt;charset&gt;][;&lt;encoding&gt;],&lt;encoded data&gt;
* </pre> * </pre>
* *
* @param mimeType 可选项null表示无数据类型image/pngtext/plain等 * @param mimeType 可选项null表示无数据类型image/pngtext/plain等
@ -803,7 +803,7 @@ public class URLUtil {
* <p> * <p>
* Data URI的格式规范 * Data URI的格式规范
* <pre> * <pre>
* data:[<mime type>][;charset=<charset>][;<encoding>],<encoded data> * data:[&lt;mime type&gt;][;charset=&lt;charset&gt;][;&lt;encoding&gt;],&lt;encoded data&gt;
* </pre> * </pre>
* *
* @param mimeType 可选项null表示无数据类型image/pngtext/plain等 * @param mimeType 可选项null表示无数据类型image/pngtext/plain等

View File

@ -237,6 +237,7 @@ public class BeanUtilTest {
person.setOpenid("11213232"); person.setOpenid("11213232");
person.setName("测试A11"); person.setName("测试A11");
person.setSubName("sub名字"); person.setSubName("sub名字");
SubPerson person1 = BeanUtil.copyProperties(person, SubPerson.class); SubPerson person1 = BeanUtil.copyProperties(person, SubPerson.class);
Assert.assertEquals(14, person1.getAge()); Assert.assertEquals(14, person1.getAge());
Assert.assertEquals("11213232", person1.getOpenid()); Assert.assertEquals("11213232", person1.getOpenid());