Создать общий интерфейс, ограниченный собственным классом

Я хотел бы создать универсальный интерфейс для этих двух классов, но я не уверен, как правильно определить универсальные шаблоны.

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);
}

Ответы на вопрос(4)

Ваш ответ на вопрос