【发布时间】:2017-01-17 00:36:30
【问题描述】:
我已经看到了不同的问题,但我仍然觉得这个话题很混乱。
我想做的就是有一个实现接口的抽象类,并有一个扩展这个抽象类的类,这样hard类需要实现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;}
}
但是,我明白了
名称冲突: 的方法具有相同的擦除类型但不覆盖它
为什么它没有被正确覆盖?
更新
感谢@Bozho,解决方案是这样的:
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>
【问题讨论】: