package ch.fhnw.oop2.assignment02; /** * Created by Kelvin on 17-Mar-16. */ public class TestGenerics { public static void main(String[] args) { Box box = new Box(); Box<ClassA, Integer> aBox = new Box<>(); Box<ClassB, Integer> bBox = new Box<>(); Box<ClassC, Integer> cBox = new Box<>(); Box<ClassD, Integer> dBox = new Box<>(); ClassA a1 = new ClassA(); ClassB b1 = new ClassB(); ClassC c1 = new ClassC(); ClassD d1 = new ClassD(); // U7 aBox.setValue(a1); aBox.setValue(b1); aBox.setValue(c1); aBox.setValue(d1); bBox.setValue(b1); bBox.setValue(d1); cBox.setValue(c1); dBox.setValue(d1); a1 = bBox.getValue(); b1 = bBox.getValue(); box = aBox; box = dBox; // aBox = bBox doesn't work, // because Box<ClassA> as a whole doesn't extend Box<ClassB> // just because ClassA extends ClassB, doesn't mean boxes of a type do // This is true for this example as well: // Box<Number> b = new Box<Integer>(); // Wildcards Box<?,?> wBox = new Box<>(); wBox = aBox; wBox = cBox; wBox = dBox; } }