在我目前正在开发的系统中,我经常需要导航对象树并根据其状态和值采取行动。在普通的 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/