Java interfaces and return types
If the return type must be the type of the class that implements the interface, then what you want is called an F-bounded type: public interface A<T extends A<T>>{ public T b(); } public class C implements A<C>{ public C b() { … } } public class D implements A<D>{ public D b() { … … Read more