Java的“键值编码”

在Apple上的Objective-C中,有一种称为“键值编码”的东西,它允许您使用类似于文件系统路径的字符串遍历对象图。 有一个非正式的协议(即接口),允许对象根据他们要求的“密钥”返回值。 例如,默认是返回键所命名的字段的值,而像NSDictionaries这样的关系集合可以实现更有趣的行为。

伪代码示例:

 foo.bar = new baz();
 foo.bar.mymap = new map();
 foo.bar.mymap ['bom'] = 2;

 foo.valueForKeyPath(“bar.mymap.bom”)#2

Java有这样的东西吗? 这很容易实现,但我想我先看看。

来自apache的beanutils库的PropertyUtils.getProperty为JavaBean属性执行此操作。

嗯,好吧,如果其他人有这个问题,看起来MVEL是一个不错的选择:

http://mvel.codehaus.org/Property+Navigation

Ujorm是一个开源Java库,提供基于键值架构的对象,请参阅示例 。