eclipseNEON+Java8にて掲題のサンプルソースを組んで実行してみると、実行するたびにStackクラスのsizeが想定外の値になります。
new時に -1 になったり、インクリメント・デクリメントするタイミングじゃないのに値が変わったりします。
原因はソース?eclipse?
public class Main { public static void main(String[] args) { Stack st = new Stack(); st.push("1"); st.push("2"); st.push("3"); Object o1 = st.pop(); Object o2 = st.pop(); Object o3 = st.pop(); } } public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack () { this.elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push (Object e) { ensureCapacity(); elements[size++] = e; } public Object pop () { if (size == 0) { throw new EmptyStackException(); } return elements[size--]; } private void ensureCapacity() { if (elements.length == size) { elements = Arrays.copyOf(elements, 2 * size + 1); } } }
mainでの実行コードもお願いします。
ここを一読(最後まで)するといいかもね https://qiita.com/nabuchi/items/087803bda368bdb29a19