递归BeanUtils.describe()
|
是否存在BeanUtils.describe(customer)的版本,该版本对\'customer \'的复杂属性进行递归调用describe()方法。
class Customer {
String id;
Address address;
}
在这里,我希望describe方法也可以检索address属性的内容。
目前,我所能看到的类名称如下:
{id=123, address=com.test.entities.Address@2a340e}
没有找到相关结果
已邀请:
3 个回复
拈吉勉犬姆
一些警告。 我不确定BeanUtils如何格式化集合中的属性,因此我使用了“ attribute [index] \”。 我不确定如何格式化地图中的属性,因此我使用了“ attribute [key] \”。 对于名称冲突,优先级是这样的:首先从超类的字段中加载属性,然后从类中加载,然后从getter方法中加载。 我还没有分析这种方法的性能。如果您的对象包含大量对象,这些对象也包含集合,则可能会有一些问题。 这是Alpha代码,不保证没有bug。 我假设您具有Commons beanutils的最新版本 另外,仅供参考,这大致取自我一直在从事的一个项目,该项目被亲切地称为“监狱中的java”,因此您可以下载它然后运行:
不过,您会注意到它返回的是String [],而不是String,这可能无法满足您的需求。无论如何,下面的代码应该可以正常工作,敬请期待!
嗓瑰
并像这样初始化它:
现在在ѭ7上调用描述。非递归调用将导致
递归调用会执行
并碰到一个“ 10”,因为describe被对象root,A和B一遍又一遍地调用。 自定义实现的一种解决方案可能是记住到目前为止已描述的所有对象(将这些实例记录在集合中,如果set.contains(bean)返回true则停止)并将某种链接存储在结果对象中。
垫歌蝎降凤
返回指定Bean提供读取方法的整个属性集。