[英]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.