import java.util.ArrayList; public class Test { public void foo() { ArrayList> listOfMyTypes = new ArrayList>(); MyType myTypeString = new MyType(); MyType myTypeInteger = new MyType(); myTypeString.setValue("hello"); myTypeInteger.setValue(5); listOfMyTypes.add(myTypeString); listOfMyTypes.add(myTypeInteger); for (MyType m : listOfMyTypes) System.out.println(m.getValue()); } public static void main(String... args) { Test test = new Test(); test.foo(); } } class MyType { private T value; public T getValue() { return value; } public void setValue(T value) { this.value = value; } }