我试图通过使用堆栈的继承push方法来定义void add(T thing)
方法,但是Eclipse说返回类型与Vector<T>.add(T)
不兼容,并且我希望我更改{{1}的返回类型1}}布尔值没有意义。
以下是我的代码
add(T)
这是我的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
答案 0 :(得分:2)
好吧,因为你持有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...
}
}
答案 1 :(得分:0)
您的Stack Class
必须使用返回类型为add()
的方法boolean
答案 2 :(得分:0)
Stack
类扩展Vector
类,其中包含boolean add(E e)
。我认为Eclipse会混淆add
中的Vector
方法和add
界面中的SomeList
方法。