从Wicket 7升级到Wicket 8之后,我在IntelliJ中遇到了多个擦除警告。
例如,在使用AjaxLink时,IntelliJ会抱怨
'setDefaultModel(IModel model)‘在'org.apache.wicket.MarkupContainer’中与‘org.apache.Wicket.IGenericComponent’中的'setDefaultModel(IModel模型)‘发生冲突;这两种方法具有相同的擦除性,但都不覆盖其他方法。
我能做些什么吗?
发布于 2018-08-21 07:02:41
如果不为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中定义的方法是协变的。
https://stackoverflow.com/questions/51931500
复制相似问题