问题描述
我建议使接口通用,而不仅仅是其方法:
interface KommuneFilter<E extends AbstractKommune<?>> { .. }
然后
public abstract class AbstractKommune<E extends AbstractKommune<?>>
implements KommuneFilter<E>
解决方法
我对此有不同的疑问,但是我仍然觉得这个话题很混乱。
我要做的就是拥有一个实现接口的抽象类,并具有一个扩展此抽象类的类,以便硬类需要实现getKommune()
and 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>