3

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

例如,当使用AjaxLinkIntelliJ 抱怨时

'org.apache.wicket.MarkupContainer' 中的 'setDefaultModel(IModel model)' 与 'org.apache.wicket.IGenericComponent' 中的 'setDefaultModel(IModel model)' 冲突;两种方法都有相同的擦除,但都没有覆盖另一个

我能做些什么吗?

4

1 回答 1

8

当您不提供AjaxLink泛型类型时会发生此错误。例如:

new AjaxLink("id")

而不是类似的东西:

new AjaxLink<Void>("id")

AjaxLink 有如下定义:

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

祖先类是MarkupContainer,它定义了:

public MarkupContainer setDefaultModel(final IModel<?> model)

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

Component setDefaultModel(IModel<?> model);

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

于 2018-08-21T07:02:41.253 回答