class Vector<T> { private T e; void set( int i, T e ){ this.e = e; } T get(int i){ return e; } } class G2 { public static void main( String[] args ){ Vector<Object> v = new Vector<Object>(); // heterogeneous v.set(0,"Cool stuff"); String s = (String) v.get(0); v.set(0,new Thread()); Thread t = (Thread) v.get(0); // s = (String) v.get(0); } }