Voj*_*ěch 6 java dynamic-dispatch lombok
有没有像在PHP中那样在Java中使用魔术方法的方法__call?
例如:
class foo {
@Setter @Getter
int id;
@Getter
Map <String, ClassInFoo> myMap;
protected class ClassInFoo {
@Setter @Getter
String name;
}
@Setter
String defaultKey;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Project Lombok注释来获取getter和setter方法来简化代码.
让我们考虑我的地图包含由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();
}
Run Code Online (Sandbox Code Playgroud)
这在Java中是否可行?
编辑:
我做了一个更精确的例子,说明我想在这里实现的目标:https://gist.github.com/1864457
这样做的唯一原因是"简写"内部类中的方法.
你绝对可以通过使用它的功能来反射
public Method getMethod(String name, Class<?>... parameterTypes)
Run Code Online (Sandbox Code Playgroud)
可以用来查看一个类是否定义了一些方法,但我没有看到如何通过正确使用接口,继承和覆盖方法来解决您的问题
提供反射等功能来管理某些无法解决的问题,但Java不是PHP,所以你应尽量避免使用它,因为它不符合语言的哲学.
| 归档时间: |
|
| 查看次数: |
4643 次 |
| 最近记录: |