//: generics/ErasureAndInheritance.java // ©2015 MindView LLC: see Copyright.txt class GenericBase { private T element; public void set(T arg) { element = arg; } public T get() { return element; } } class Derived1 extends GenericBase {} class Derived2 extends GenericBase {} // No warning // class Derived3 extends GenericBase {} // Strange error: // unexpected type found : ? // required: class or interface without bounds public class ErasureAndInheritance { @SuppressWarnings("unchecked") public static void main(String[] args) { Derived2 d2 = new Derived2(); Object obj = d2.get(); d2.set(obj); // Warning here! } } ///:~