Есть ли способ использования магических методов в Java, как в PHP, с __ call
?
Например:
class foo {
@Setter @Getter
int id;
@Getter
Map 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?
РЕДАКТИРОВАТЬ:
Я привел более точный пример того, чего я пытаюсь достичь здесь: https: // gist.github.com/1864457
Единственная причина делать это - сокращать методы во внутреннем классе.