我正在尝试定义 void add(T thing)
方法使用堆栈的继承推送方法,但 Eclipse 表示返回类型与 Vector<T>.add(T)
不兼容并希望我更改 add(T)
的返回类型为 boolean 值,这没有意义。
下面是我的代码
public class ListStack<T> extends Stack<T> implements SomeList<T>{
Stack<T> stack1=new Stack<T>();
public ListStack(){//constructor
super();
stack1=new Stack<T>();
}
//add method
public void add(T something){
this.push(something);}
}
这是我的 SomeList
界面
public interface SomeList<T>{
public void add(T something);
public void take(T idx);
.
.
.
}
最佳答案
既然你持有 Stack<T>
的实例,作为成员,您不需要从同一个类继承。
删除继承并使用您的成员:
public void add(T something){
stack1.push(something);
}
如果您不再子类化Stack<T>
你的编译器不应该提示 add(T)
的不同返回类型不再了。
我认为你应该看看 adapter pattern .
我会这样做:
界面
interface MyList<T> {
public void addFront(T thing);
public void remove(int pos);
public void removeEnd();
public T get(int pos);
public int length();
public boolean isEmpty();
}
实现
class MyListImpl<T> implements MyList {
Stack<T> mStack;
public MyListImpl() {
mStack = new Stack<T>();
}
public void addFront(T thing) {
mStack.push(thing);
}
public void remove(int pos) {
//mStack...
}
public void removeEnd() {
//mStack...
}
public T get(int pos) {
// return mStack...
}
public int length() {
// return mStack...
}
public boolean isEmpty() {
// return mStack...
}
}
关于java - 使用继承的方法定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19675160/