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アノテーションを使用しています。
私のマップには文字列によってマップされたいくつかのアイテムが含まれており、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
これを行う唯一の理由は、内部クラスのメソッドを「簡略化」することです。