在Java中使用神奇方法有什麼方法,比如在PHP中使用__call
?在Java中以神奇的方式調用方法
例如:
class foo {
@Setter @Getter
int id;
@Getter
Map <String, ClassInFoo> myMap;
protected class ClassInFoo {
@Setter @Getter
String name;
}
@Setter
String defaultKey;
}
我使用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();
}
在Java中這是某種程度上可能嗎?
編輯:
我做了什麼,我想在這裏實現更精確的例子:https://gist.github.com/1864457
這樣做的唯一原因是「速記」中的內部類的方法。
Upvoting作爲一個有趣的問題,但這不應該被標記爲OOP。您感興趣的功能不是面向對象的,事實上也不一定是動態的。 – Perception 2012-02-19 15:18:00
一般而言,您需要自己的getter和setter,您可以使用IDE生成它們。例如,讓getter返回一個可變集合不是一個好主意。相反,你可以有'ClassInFoo getMyMap(String name)' – 2012-02-19 16:27:50
好吧,我可以寫所有的getters,但我發現它重複和醜陋。我只是想這樣,以便我的HTML編碼人員可以簡單地請求這些方法。 – 2012-02-19 22:30:05