用 ObservableMap 包装后如何访问原始地图?

How can I access the original map after wrapping it with ObservableMap?

我创建了一个地图,然后将其包装为 ObservableMap。后来,我尝试访问原始的、未包装的地图,但我似乎无法访问它。好像返回null。

private def _swarms = [:]
private def swarms = new ObservableMap(_swarms)
...
def orig = swarms.content        // returns null
orig = swarms.mapDelegate        // returns null

我在 http://groovy.codehaus.org/api/groovy/util/ObservableMap.html 没有看到任何看起来很有希望的东西。

Map 接口的情况下,我们不能将 property 引用为 field。它将尝试寻找具有该名称的 key,如果 key<->value 对不存在,它将尝试 return null。试试这个:

def _swarms = [ a : 1 ]
def swarms = new ObservableMap( _swarms )

assert swarms.getContent() == [ a : 1 ]
assert swarms.getMapDelegate() == [ a : 1 ]

// Similar anomaly
assert !swarms.class
assert swarms.getClass().simpleName == "ObservableMap"

同样,您不能在 Map 上使用 .class。相反,必须使用 getClass()