Есть ли способ использовать магические методы в Java, как в PHP с __call
?
Например:
class foo {
@Setter @Getter
int id;
@Getter
Map <String, ClassInFoo> myMap;
protected class ClassInFoo {
@Setter @Getter
String name;
}
@Setter
String defaultKey;
}
Я использую Project Lombok аннотации для методов получения и установки для упрощения кода.
Давайте рассмотрим, что моя карта содержит несколько элементов, отображаемых с помощью String, и defaultKey определяет элемент по умолчанию.
Что бы я хотелчтобы иметь возможность вызывать foo.getName()
, который возвращает имя по умолчанию как foo.myMap.get(defaultKey).getName()
.
Причина, по которой я не могу просто написать все методы получения вручную, заключается в том, что класс Foo на самом деле наследуется с обобщениями ивнутренний класс может быть другим.
Мне нужно что-то вроде:
function Object __call(method) {
if (exist_method(this.method)
return this.method();
else
return this.myMap.get(defaultKey).method();
}
Возможно ли это как-то на Java?
РЕДАКТИРОВАТЬ:
IЯ сделал более точный пример того, чего я пытаюсь достичь: https://gist.github.com/1864457
Единственная причина, по которой это делается, - это "сокращение" методов во внутреннем классе.