rap*_*ura 0 java generics abstract-class overloading
看看这堂课
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;
}
Run Code Online (Sandbox Code Playgroud)
现在我们在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();
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,为什么第一次调用doSomething()会转到不抛出Err,Arr但第二次调用的方法,如果lol为null,则运行抛出Err,Arr的doSomething实现.如何区分运行哪些方法!?
编辑:错误报警.我的天啊.我一定是整个晚上一直都是瞎子,做某事实际上是不一样的方法名称,他们叫做querryAll和QuerryAl1,我会找到那个做过它并揍他的人.
EDIT2:谢谢大家.
您不能在类中声明具有相同签名的两个方法.该throws条款,注释和返回类型不计.
abstract T doSomething();
abstract T doSomething() throws Err, Arr; // won't compile
Run Code Online (Sandbox Code Playgroud)
如果编译,则编译器中存在错误.
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |