有没有像 PHP 那样在 Java 中使用魔术方法的方法__call
?
例如:
class foo {
@Setter @Getter
int id;
@Getter
Map <String, ClassInFoo> myMap;
protected class ClassInFoo {
@Setter @Getter
String name;
}
@Setter
String defaultKey;
}
我正在为 getter 和 setter 方法使用Project Lombok注释来简化代码。
让我们考虑一下,我的地图包含几个由 String 映射的项目,而 defaultKey 定义了默认项目。
我想要的是能够调用foo.getName()
它将默认名称返回为foo.myMap.get(defaultKey).getName()
.
我不能手动编写所有 getter 的原因是 Foo 类实际上是用泛型继承的,内部类可能不同。
我有点需要类似的东西:
function Object __call(method) {
if (exist_method(this.method)
return this.method();
else
return this.myMap.get(defaultKey).method();
}
这在Java中可能吗?
编辑:
我在这里做了一个更精确的例子来说明我想要实现的目标:https ://gist.github.com/1864457
这样做的唯一原因是“速记”内部类中的方法。