i sent wrong example. This one is right, compiles only in eclipse. class Generic<T> {} public class Casting { void test() { Class<? extends Generic<?>> generic = (Class<? extends Generic<?>>) Generic.class; } } javac: Casting.java:4: error: inconvertible types Class<? extends Generic<?>> generic = (Class<? extends Generic<?>>) Generic.class;