看看這個類的Java:抽象泛型類和方法重載爲了
abstract class LolCat<T> {
T execute() throws Err, Arr {
T lol = doSomething();
if (lol == null)
lol = doSomething();
return lol;
}
abstract T doSomething();
abstract T doSomething() throws Err, Arr;
}
現在我們在一些有一個匿名實現任何方法的地方,這樣
final UhmLetsSayCat cat = new ImplLolCat<UhmLetsSayCat>() {
@Override
UhmLetsSayCat doSomething() {
return null; // somehow a UhmLetsSayCat is returned for real sometimes null
}
@Override
UhmLetsSayCat doSomething() throws Err,Arr {
return null; // really it does right thing, whatever
}
}.execute();
現在我的問題的LolCat的是,第一次調用doSomething()的方法不會拋出Err,Arr,而是第二次調用,如果lol爲null,則運行拋出Err,Arr的doSomething實現。如何區分哪些方法運行!?
編輯:錯誤報警。我的天啊。我一定是整個晚上都失明瞭,其實有些方法的名字實際上不一樣,他們叫querryAll和QuerryAl1,我會找到那個做他並且打他的人。
編輯2:謝謝大家。
它不編譯。我的猜測是,在你的真實代碼中,方法簽名(名稱或參數)是不同的。 –
這是我編譯的類。它實際上是一個抽象類LolCat裏面的一個公共類的東西。這有什麼區別嗎?匿名實現在Something中的方法中。 –
rapadura
借調。我得到'已經定義...' –