PHP에서 __call
같이있는 것처럼 Java에서 마법 메서드를 사용하는 방법이 있습니까? 예를 들어마법으로 Java에서 메서드 호출
:
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.myMap.get(defaultKey).getName()
으로 기본 이름을 반환하는 foo.getName()
을 호출 할 수 있습니다.
필자가 모든 getter를 수동으로 작성할 수없는 이유는 Foo 클래스가 사실 generics로 상속되었고 내부 클래스가 다를 수 있기 때문입니다.
function Object __call(method) {
if (exist_method(this.method)
return this.method();
else
return this.myMap.get(defaultKey).method();
}
자바에서 어떻게 든 가능한 이것이다 :
나는 종류의 같은 것이 필요합니까?
편집 : https://gist.github.com/1864457
이 일을하는 유일한 이유는 내부 클래스에 "속기"방법입니다 :
내가 여기 달성하기 위해 노력하고 무엇보다 정확한 예를했다.
흥미로운 질문으로 Upvoting지만,이 OOP 태그를해서는 안됩니다. 관심있는 기능은 객체 지향이 아니며 실제로 동적 일 필요는 없습니다. – Perception
일반적으로 IDE로 생성 할 수있는 getter 및 setter가 필요합니다. 예를 들어 getter가 가변 컬렉션을 반환하는 것은 좋지 않습니다. 대신에'ClassInFoo getMyMap (String name)'을 가질 수 있습니다. –
네, 모든 게터를 쓸 수는 있지만, 중복되고 추한 것을 발견했습니다. HTML 코딩 담당자가이 방법을 간단하게 요청할 수 있도록이 기능을 사용하고 싶습니다. –