关于对象图(object graph)的idea

可能一说object graph,有sense的人就想到ognl。没错应该是这样,我在一开始遇到这个问题也是一样的想法。我的最初想法是:有没有一个工具可以把一个实例对象的对象图“路径”全部列出来呢。比如,类Father:

class Father{
String name;
List<Child> children;

}
class Child{
String name,age;
Father father;

}

现在有一个叫王二猫的father,有两个孩子,那么我要的就是:

father.name
father.child[0].name
father.child[0].age
father.child[1].name
father.child[1].age

我不需要知道具体的内容,只需要上面的这些object graph里的路径,当然我会用这些路径获取相应的属性值。ognl和commons-beanutils是把这些路径作为参数来获取相应的属性值,而我想要的就是根据一个存在的对象来生成所有可能的路径串。这样作有甚么意义呢?可能很多人不是很明白我到底想要干什么。其实由来是:我想要动态的方式去遍历对象的所有属性(包括nested属性),然后统一处理,比如想要比较两个对象我不许要写一大堆代码去一个个遍历每个属性,而是根据object graph的路径去动态获取。

可能是“成长”了,最近想的东西很多都是关于动态,脚本。btw,BeanUtils.describe是做不到的,因为得不到nested属性 – 不过似乎可以用它来遍历对象图. – 这样好吗?

Comments are closed.