首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wicket 8 wicket setDefaultModel与setDefaultModel冲突

Wicket 8 wicket setDefaultModel与setDefaultModel冲突
EN

Stack Overflow用户
提问于 2018-08-20 13:10:01
回答 1查看 1.2K关注 0票数 3

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

例如,在使用AjaxLink时,IntelliJ会抱怨

'setDefaultModel(IModel model)‘在'org.apache.wicket.MarkupContainer’中与‘org.apache.Wicket.IGenericComponent’中的'setDefaultModel(IModel模型)‘发生冲突;这两种方法具有相同的擦除性,但都不覆盖其他方法。

我能做些什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-21 07:02:41

如果不为AjaxLink提供泛型类型,则会发生此错误。例如:

代码语言:javascript
复制
new AjaxLink("id")

而不是像:

代码语言:javascript
复制
new AjaxLink<Void>("id")

AjaxLink有以下定义:

代码语言:javascript
复制
public abstract class AjaxLink<T> extends AbstractLink implements IAjaxLink, IGenericComponent<T, AjaxLink<T>>

祖先类是MarkupContainer,它定义:

代码语言:javascript
复制
public MarkupContainer setDefaultModel(final IModel<?> model)

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

代码语言:javascript
复制
Component setDefaultModel(IModel<?> model);

现在,我不完全确定我是否完全理解这个问题,但是由于缺少泛型类型,编译器无法确定来自MarkupContainer的实现(它返回MarkupContainer)与IGenericComponent中定义的方法是协变的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51931500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档