Java中的对象树导航语言

paw*_*que 9 java xpath ognl object-graph

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

Dan*_*elo 5

您可能想要考虑Jakarta Bean Utils

String street = (String) PropertyUtils.getProperty(user, "address.street");
Run Code Online (Sandbox Code Playgroud)

您可以使用点表示法浏览对象图.您还可以访问索引属性.有关文档的更多详细信息.

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

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

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

String street = (String) PropertyUtils.getProperty(person, "address.street");
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*oko 1

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