看看这个类的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
借调。我得到'已经定义...' –