我正在尝试使用groovy map强制模拟Map。 我已尝试过代码的各种变体,但结果始终为null。
Map<String, String> map = [get: {String k -> "echo"}] as Map<String, String>
println map.get("a")
如果我使用map = {"echo"} as Map<String, String>
则可行。
关于如何使第一个版本有效的任何想法?
感谢
答案 0 :(得分:2)
像这样做直接强制的问题是重新定义Map
的{{1}}已经是get
并且Groovy source强制检查了您要做的是将Map
之类的内容强制转换为Map
,然后将其正常转换,而不是尝试根据需要创建代理。
要解决此问题,您可以使模拟对象与Map
不同,如Map
,然后它会强制进入您的界面类型:
Expando