Конфликт имен в Java Generics, метод не корректно переопределен

Я видел разные вопросы по этому поводу, но я все еще нахожу эту тему очень запутанной.

Все, что я хочу сделать, это иметь абстрактный класс, который реализует интерфейс, и иметь класс, расширяющий этот абстрактный класс, так что жесткий класс должен реализоватьgetKommune() а такжеsetKommune(Kommune kommune), но не другой метод, потому что это в абстрактном классе.

У меня есть следующий интерфейс.

public interface KommuneFilter {

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

    Kommune getKommune();

    void setKommune(Kommune kommune);
}

И этот абстрактный класс

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

И я хочу использовать это так

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

Тем не менее, я получаю

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

Почему это не корректно переопределено?

ОБНОВИТЬ

Благодаря @ Божо, решение таково:

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>

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

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