package Generics; public class CustomStack { private E[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public CustomStack() { // elements = (E[]) new Object[][DEFAULT_INITIAL_CAPACITY]; } public void push(E e){ ensureCapacity(); elements[size++] = e; } public void pop(){ if (size == 0){ throw new IllegalStateException("Stack is empty"); } elements[--size] = null; } private void ensureCapacity(){ if (elements.length == size){ Object[] newElements = new Object[2 * size + 1]; System.arraycopy(elements, 0, newElements, 0, size); // elements = newElements; } } }