Создать общий интерфейс, ограниченный собственным классом
Я хотел бы создать универсальный интерфейс для этих двух классов, но я не уверен, как правильно определить универсальные шаблоны.
public class ThingA implements Thing {
public ThingA createCopy(ThingA original);
}
public class ThingB implements Thing {
public ThingB createCopy(ThingB original);
}
Я попробовал это.
public interface Thing<V extends Thing<V>> {
public V createCopy(V original);
}
Но я все еще могу делать такие вещи, которые нельзя допускать.
public class ThingB implements Thing<ThingA> {
public ThingA createCopy(ThingA original);
}