我想实现一个自定义的类 Map 类,其中大部分功能都委托给嵌套的 Map 委托实例。而且,我希望这个类看起来像一个映射到一个“真正的”Java 类。因此,我尝试执行以下操作:
class ConfigurationMap implements Map {
def inner = [:]
def methodMissing(String methodName,methodArgs) {
return inner.invokeMethod(methodName,methodArgs)
}
// my methods here
...
当然,这不起作用 :-( Groovy 要求类实现 Map 接口方法,尽管在运行时它们将由 MissingMissing() 处理。如果我删除该implements
子句:
class ConfigurationMap {
def inner = [:]
def methodMissing(String methodName,methodArgs) {
return inner.invokeMethod(methodName,methodArgs)
}
它适用于 Groovy(即实例的行为确实像 Map),但我不能将它用作 Java 代码中的 Map:
ConfigurationMap cm = ConfigParser.parseConfig("foo.cfg");
assertEquals(0,cm.size()); // size() method is not defined :-(
并建议我如何让我的课程简短(即不明确实现 Map)并且仍然使课程看起来像 Map to Java?