java - Java 中的对象树导航语言

标签 java xpath ognl object-graph

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

最佳答案

您可能需要考虑 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)。

关于java - Java 中的对象树导航语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2400483/

相关文章:

struts2 - 由 : java. lang.IllegalArgumentException 引起:未知的保留 key '_typeConverter'

jsp - Struts 2 中的 Map-backed Actionform 替代方案

jsp - 如何拥有 <s :if> with two conditions in Struts 2

java - 是否推荐使用aerospike对某些字段进行过滤

java - android - 从 Activity View 中调用方法

python - xpath不能只选择一个html标签

java - xpath表达式中如何使用逻辑运算符

java - 除了静态类变量,Java 中还有其他类型的静态变量吗?

java - NotificationListenerService.cancelNotification 抛出 NullPointerException

html - 基于文本的跨度的 XPath?