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
.
中定义的方法协变
从 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
.