当使用闭包映射在Groovy中实现接口时(如在http://groovy.codehaus.org/Groovy+way+to+implement+interfaces中)有什么办法可以在使用后将对象转换回地图as keyword或asType方法来实现接口?
根据您的用例,您似乎可以Map
在将其转换为所需的界面之前保留对原始的引用.
但是,查看将Map
对象转换为接口的源代码(使用a Proxy
),看起来您可以通过获取InvocationHandler
委托来重新检索原始地图.
def i = 1
def m = [ hasNext:{ true }, next:{ i++ } ]
Iterator iter = m as Iterator
def d = java.lang.reflect.Proxy.getInvocationHandler(iter).delegate
assert d.is(m)
Run Code Online (Sandbox Code Playgroud)
注意:这取决于Groovy代码的内部,因此使用风险由您自行承担: