class TestClass { public final class TestMapper { public > T mapType() { SimpleMapping mapping = new SimpleMapping(); return (T) mapping; //This is reports "Inconvertible types; cannot cast TestClass.SimpleMapping to 'T'" } } private final class SimpleMapping implements Mapping {} public interface Mapping {} } class TestClass1 { public final class TestMapper { public > T mapType() { Mapping mapping = new SimpleMapping(); //Changed type to interface return (T) mapping; } } private final class SimpleMapping implements Mapping {} public interface Mapping {} }