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>