package generics; import java.util.*; import java.lang.reflect.*; /** * RUN: * javac generics/GenericsCast.java && java generics.GenericsCast * OUTPUT: * */ public class GenericsCast { public static final int SIZE = 10; public static void main(String[] args) { FixedSizeStack strings = new FixedSizeStack(SIZE); for (String s : "A B C D E F G H I J".split(" ")) { strings.push(s); // System.out.print(s + " "); } for (int i = 0; i < SIZE; i++) { String s = strings.pop(); System.out.print(s + " "); } } } class FixedSizeStack { private int index = 0; private Object[] storage; public FixedSizeStack(int size) { storage = new Object[size]; } public void push(T item) { storage[index++] = item; } @SuppressWarnings("unchecked") public T pop() { return (T)storage[--index]; } }