Wicket 8 wicket setDefaultModel clashes with setDefaultModel



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

例如,当使用AjaxLinkIntelliJ 抱怨时

'setDefaultModel(IModel model(' in 'org.apache.wicket.MarkupContainer' 与 'setDefaultModel(IModel model(' in 'org.apache.wicket.IGenericComponent';两种方法具有相同的擦除 然而,两者都不能凌驾于另一方之上

我能做些什么吗?

> 当您没有为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中定义的方法共变。

相关内容

  • 没有找到相关文章

最新更新