Java中的对象树导航语言

时间:2010-03-08 10:05:42

标签: java xpath ognl object-graph

在我正在开发的系统中,我经常需要导航对象树,并根据其状态和值采取行动。在普通的Java中,这导致了繁琐的for循环,if语句等...是否有其他方法来实现树导航,类似于XPath for XML?我知道有JXPath和OGNL,但你知道其他任何库吗?您是否知道任何为特定树导航表达式生成字节码的库,以使处理速度与Java本地fors和ifs一样快?

3 个答案:

答案 0 :(得分:5)

您可能需要考虑Jakarta Bean Utils

String street = (String) PropertyUtils.getProperty(user, "address.street");

您可以使用点表示法浏览对象图。您还可以访问索引属性。关于文档的更多细节。

一个缺点是Bean Utils期望您导航的图形不包含空引用。

下面的代码片段会抛出一个NPE

Person person = new Person();
person.setAddress(null);

String street = (String) PropertyUtils.getProperty(person, "address.street");

为了克服这个限制,我的团队实现了一个类,该类根据需要创建图的所有空引用的实例。此代码基于反射和动态代理(CGLIB)。

答案 1 :(得分:2)

我可以问你为什么不喜欢OGNL / JXPath?显然你可能已经做了你的研究,但是我想知道为什么OGNL没有解决它旨在解决的目的。

此外google-collections还有一些仿函数(除了上面提到的公共集合),值得一看。

答案 2 :(得分:1)

Jakarta集合(http://commons.apache.org/collections/apidocs/)允许您在集合成员上应用谓词,仿函数等。这是你正在寻找的方向吗?