使用 Vector<E> 实现 Stack<E>

Implementing a Stack<E> using Vector<E>

我正在按以下方式使用堆栈...我在第 26 行遇到问题:

import java.util.Vector;

public class Stack<E> {
    private Vector <E> v=new Vector <E>(1);
    public int getSize() {
        return v.size();
    }

    public boolean isEmpty() {
        return (v.isEmpty());
    }

    public E getTop() {
        return v.lastElement();
    }

    public E pop() {
        E p;
        if (!isEmpty()) {
            p = v.lastElement();
            v.remove(v.size() - 1);
        }
        /*return p; what to do here?? when stack is empty how to return and what to?* /
    }

    public void push(E p) {
        v.add(p);
    }
}

一种方法虽然不是很推荐,但是return null:

public E pop() {
E p = null;
if (!isEmpty()) {
    p = v.lastElement();
    v.remove(v.size() - 1);
}
return p;

如果您可以为将在堆栈中使用的类型提供默认构造函数,以便您可以事后检查对象是否有效,那就更好了。

E p = new E(); // invalid object

您可能想查看 Null Object Pattern,其中提供了更多相关信息。