Crear una interfaz genérica restringida a clase propia
Me gustaría crear una interfaz genérica para esas dos clases, pero no estoy seguro de cómo especificar los genéricos de la manera correcta.
public class ThingA implements Thing {
public ThingA createCopy(ThingA original);
}
public class ThingB implements Thing {
public ThingB createCopy(ThingB original);
}
Lo intenté esto.
public interface Thing<V extends Thing<V>> {
public V createCopy(V original);
}
Pero todavía puedo hacer cosas como esta, que no deberían permitirse.
public class ThingB implements Thing<ThingA> {
public ThingA createCopy(ThingA original);
}