Java Generics-Namenskonflikt, Methode nicht korrekt überschrieben

Ich habe diesbezüglich verschiedene Fragen gesehen, finde dieses Thema jedoch immer noch sehr verwirrend.

Alles, was ich tun möchte, ist eine abstrakte Klasse, die eine Schnittstelle implementiert, und eine Klasse, die diese abstrakte Klasse erweitert, so dass die harte Klasse implementiert werden mussgetKommune() undsetKommune(Kommune kommune), aber nicht die andere Methode, denn das ist in der abstrakten Klasse.

Ich habe die folgende Schnittstelle.

public interface KommuneFilter {

    <E extends AbstractKommune<?>> void addKommuneFromCurrentUser(E e);

    Kommune getKommune();

    void setKommune(Kommune kommune);
}

Und diese abstrakte Klasse

public abstract class AbstractKommune<E extends AbstractKommune<?>> implements KommuneFilter {
    @PrePersist
    void addKommuneFromCurrentUser(E e) {
            Kommune k = e.getKommune();
    }
}

Und ich möchte es so benutzen

    public class Person extends AbstractKommune<Person> {
        private Kommune kommune;             
        public void setKommune(Kommune kommune) {this.kommune=kommune;}
        public Kommune getKommune() {return kommune;}
    }

Ich verstehe jedoch

Name clash: The method of has the same erasure of type but does not override it

Warum wird es nicht richtig überschrieben?

AKTUALISIEREN

Dank @Bozho lautet die Lösung wie folgt:

public interface KommuneFilter<E extends AbstractKommune<?>> {
    public void addKommuneFromCurrentUser(E e);
}

public abstract class AbstractKommune<E extends AbstractKommune<?>> implements KommuneFilter<E> 

public class Person extends AbstractKommune<Person>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage