Collections Data Structure Java

public class Stack {
  private T[] items;
  private int top;
  @SuppressWarnings("unchecked")
  public Stack(int size) {
    items = (T[]) new Object[size];
    top = -1;
  }
  public void push(T item) throws Exception {
    if (top == items.length - 1)
      throw new Exception("Stack Full");
    items[++top] = item;
  }
  public T pop() throws Exception {
    if (top == -1)
      throw new Exception("Stack Empty");
    return items[top--];
  }
}