簡體   English   中英

Java:抽象泛型類和方法重載順序

[英]Java: abstract generic class and method overloading order

看這節課

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;
}

現在,我們可以通過LolCat的某種方法在任何地方使用匿名實現,如下所示

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();

現在我的問題是,第一次調用doSomething()會轉到不引發Err,Arr的方法,而第二次調用(如果lol為null)運行會引發Err,Arr的doSomething實現。 如何區分要運行的方法!?

編輯:虛假警報。 我的天啊。 我一定整個晚上都瞎了,doSomething實際上不是相同的方法名稱,它們分別稱為querryAll和QuerryAl1,我會找到這樣做的人並and他。

EDIT2:謝謝大家。

您不能在類中聲明具有相同簽名的兩個方法。 throws子句,注釋和返回類型不計算在內。

abstract T doSomething();
abstract T doSomething() throws Err, Arr; // won't compile

如果編譯成功,則說明您的編譯器存在錯誤。

您甚至都不應該編譯此示例(錯誤:重復方法doSomething()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM