public class MyStack<T> { private static final int DEFAULT_LENGTH = 5; private Object elementData[]; private int size = 0; public MyStack(){ elementData = new Object[DEFAULT_LENGTH]; } public MyStack(int length){ elementData = new Object[length]; } public void push(T element) throws ArrayIndexOutOfBoundsException,IllegalArgumentException { if(element == null){ throw new IllegalArgumentException("element can not be null"); } else { if(size == elementData.length){ throw new ArrayIndexOutOfBoundsException(); } else { elementData[size++] = element; } } } public T pop() throws ArrayIndexOutOfBoundsException{ if(size == 0){ throw new ArrayIndexOutOfBoundsException(); } else { T element = (T) elementData[--size]; elementData[size] = null; // 防止内存泄露 return element; } } public Object[] getElementData(){ return elementData; } }