Erstellen Sie ein generisches Interface, das auf die eigene Klasse beschränkt ist

Ich möchte eine generische Schnittstelle für diese beiden Klassen erstellen, bin mir jedoch nicht sicher, wie ich die Generika richtig angeben soll.

public class ThingA implements Thing {
    public ThingA createCopy(ThingA original);
}

public class ThingB implements Thing {
    public ThingB createCopy(ThingB original);
}

Ich habe es versucht.

public interface Thing<V extends Thing<V>> {
    public V createCopy(V original);

}

Aber ich bin immer noch in der Lage, solche Dinge zu tun, die nicht erlaubt sein sollten.

public class ThingB implements Thing<ThingA> {
    public ThingA createCopy(ThingA original);
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage