Jython中暴露一个Java地图<>使得其键可与Python“点”操作符(属性访问)(

2019-10-23 05:41发布

我们有一些Map<String, Object>在Java中,我想提出可为Jython的功能。 我想通过访问内容

mymap.foo.bar

而不是

mymap['foo']['bar']

有没有一种方法来包装Map中的对象,以便它在Jython的这种行为? (例如,像__getattr__在Python方法中,仅在Java中实现)

Answer 1:

最后我实现这个:

@Override public PyObject __findattr_ex__(String name) {
    if (this.containsKey(name))
    {
        return Py.java2py(this.get(name));
    }
    else
    {
        throw Py.AttributeError(name);
    }
}    

对于延伸二者的对象Map<String, Object>PyObject



文章来源: exposing a Java Map<> in Jython so that its keys are available with Python “dot” operator (attribute access)