我创建了自己的类“MyStack”,它继承自 Stack 并存储我在其他地方声明的项目“MyItem”。
public class MyStack extends Stack<MyItem> {
private int pops = 0;
public MyStack() {
}
}
Run Code Online (Sandbox Code Playgroud)
我想重写该方法pop()
,我这样做:
@Override
public MyItem pop() {
if (this.isEmpty()) {
return null;
}
pops++;
return this.super();
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为'java.util.Stack' is not an inner class
.
然后我尝试使用pop()
:
@Override
public MyItem pop() {
if (this.isEmpty()) {
return null;
}
pops++;
return this.pop();
}
Run Code Online (Sandbox Code Playgroud)
但正如pop()
调用一样pop()
,我得到的是无限递归调用,因此,StackoverflowError
.
我不明白我应该如何覆盖它。
我不确定你为什么要从 Stack 继承,但你的重写问题非常简单。您应该使用super.pop() [调用父方法] 而不是this.pop() [调用此方法 == 递归调用]
@Override
public MyItem pop() {
if (this.isEmpty()) {
return null;
}
pops++;
return super.pop();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
220 次 |
最近记录: |