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 * @param bean 原始Bean
*/ */
public DynaBean(Object bean) { public DynaBean(final Object bean) {
Assert.notNull(bean); Assert.notNull(bean);
if (bean instanceof DynaBean) { 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 { } else {
final PropDesc prop = BeanUtil.getBeanDesc(beanClass).getProp(fieldName); final PropDesc prop = BeanUtil.getBeanDesc(beanClass).getProp(fieldName);
if (null == prop) { 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); prop.setValue(bean, value);
} }

View File

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