This commit is contained in:
Looly 2023-11-12 19:36:09 +08:00
parent 66def6fddf
commit 4f29f43bcc
2 changed files with 13 additions and 6 deletions

View File

@ -65,13 +65,21 @@ public class DynaBean implements Cloneable, Serializable {
*
* @param bean 原始Bean
*/
public DynaBean(Object bean) {
public DynaBean(final Object bean) {
Assert.notNull(bean);
if (bean instanceof DynaBean) {
bean = ((DynaBean) bean).getBean();
// 已经是动态Bean则提取对象
this.bean = ((DynaBean) bean).getBean();
this.beanClass = ((DynaBean) bean).getBeanClass();
} else if (bean instanceof Class) {
// 用户传入类默认按照此类的默认实例对待
this.bean = ConstructorUtil.newInstance((Class<?>) bean);
this.beanClass = (Class<?>) bean;
} else {
// 普通Bean
this.bean = bean;
this.beanClass = ClassUtil.getClass(bean);
}
this.bean = bean;
this.beanClass = ClassUtil.getClass(bean);
}
/**
@ -151,7 +159,7 @@ public class DynaBean implements Cloneable, Serializable {
} else {
final PropDesc prop = BeanUtil.getBeanDesc(beanClass).getProp(fieldName);
if (null == prop) {
throw new BeanException("No public field or set method for {}", fieldName);
throw new BeanException("No public field or set method for '{}'", fieldName);
}
prop.setValue(bean, value);
}

View File

@ -70,7 +70,6 @@ public class DynaBeanTest {
Assertions.assertEquals("test for 李华", invoke);
}
@Test
public void beanByInstanceClazzConstructorTest() {
final String name_before = "李华";