支持任何对象类型,有更多的错误检查。
package Stack; /** * Created by Frank */ public class MyStack<T> implements SimpleStack<T> { public static void main(String[] args) { MyStack<String> stack = new MyStack<>(); stack.push("Frank"); stack.push("Smith"); System.out.println(stack.pop()); } private int depth = 0; public static final int DEFAULT_INITIAL = 10; private T[] stack; public MyStack() { this(DEFAULT_INITIAL); } public MyStack(int howBig) { if (howBig <= 0) { throw new IllegalArgumentException(howBig + " must be positive, but was " + howBig); } stack = (T[]) new Object[howBig]; } @Override public boolean empty() { return depth == 0; } @Override public void push(T obj) { stack[depth++] = obj; } @Override public T pop() { --depth; T tmp = stack[depth]; stack[depth] = null; return tmp; } @Override public T peek() { if (depth == 0) { return null; } return stack[depth - 1]; } }