Wicket 8 wicket setDefaultModel 与 setDefaultModel 冲突

Wicket 8 wicket setDefaultModel clashes with setDefaultModel

从 Wicket 7 升级到 Wicket 8 后,我在 IntelliJ 中遇到了多个擦除警告。

例如使用 AjaxLink 时 IntelliJ 抱怨

'setDefaultModel(IModel model)' in 'org.apache.wicket.MarkupContainer' clashes with 'setDefaultModel(IModel model)' in 'org.apache.wicket.IGenericComponent'; both methods have same erasure yet neither overrides the other

我能做些什么吗?

当您没有给 AjaxLink 泛型类型时会发生此错误。例如:

new AjaxLink("id")

而不是像这样的东西:

new AjaxLink<Void>("id")

AjaxLink 具有以下定义:

public abstract class AjaxLink<T> extends AbstractLink implements IAjaxLink, IGenericComponent<T, AjaxLink<T>>

祖先class是MarkupContainer,它定义:

public MarkupContainer setDefaultModel(final IModel<?> model)

它实现了 IGenericComponent,它具有通用类型 <T, C extends IGenericComponent<? super T, ?>>,分配了类型 <T,AjaxLink<T>> 并定义了方法:

Component setDefaultModel(IModel<?> model);

现在,我不完全确定我是否完全理解这个问题,但不知何故,由于缺少泛型类型,编译器无法弄清楚 MarkupContainer 的实现(returns MarkupContainer) 与 IGenericComponent.

中定义的方法协变