package com.util; /** * このプログラムでは、メモリーリークの可能性がある * 現実にテストを行っても再現はほぼ不可能であるが、 * (廃れた参照)Obsolete referenceが存在する。 * 廃れた参照については、以下を参照 * @see Effective Java[tm] プログラミングガイド ISBN4-89471-436-1 * @author s-okita */ public class Stack { private Object [] elements; private int size = 0; /** * */ public Stack() { super(); // TODO 自動生成されたコンストラクター・スタブ } public int length() { return size; } public void push(Object o) { if (size == 0) { elements = new Object[10]; } if (elements.length == size) { Object [] oldElements = elements; elements = new Object [size * 2]; // obsolete reference(廃れた参照) System.arraycopy(oldElements, 0, elements, 0, size); } elements[size] = o; size++; } public Object pop() { if (size == 0) { throw new java.util.EmptyStackException(); } else { //size--; return elements[--size]; } } }