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

时间:2015-01-06 23:48:11

标签: groovy observable observers

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

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看不到任何看起来很有希望的东西。

1 个答案:

答案 0 :(得分:2)

property界面的情况下,我们无法将field引用为Map。它会尝试查找具有该名称的key,如果null对不存在,则会返回key<->value。试试这个:

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"

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