Conflito de nome Java Generics, método não substituído corretamente

Vi perguntas diferentes sobre isso, mas ainda acho esse tópico muito confuso.

Tudo o que eu quero fazer é ter uma classe abstrata que implemente uma interface e uma classe estendendo essa classe abstrata para que a classe difícil precise implementargetKommune() esetKommune(Kommune kommune), mas não o outro método, porque isso está na classe abstrata.

Eu tenho a seguinte interface.

public interface KommuneFilter {

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

    Kommune getKommune();

    void setKommune(Kommune kommune);
}

E essa classe abstrata

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

E eu quero usá-lo assim

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

No entanto, eu recebo

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

Por que não é substituído corretamente?

ATUALIZAR

Graças a @Bozho, a solução é esta:

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>

questionAnswers(2)

yourAnswerToTheQuestion