setDefaultModelとWicketの8改札setDefaultModel衝突

mrkernelpanic:

改札7から自動改札8にアップグレードした後、私はIntelliJの内の複数の消去警告をencounterd。

例えば使用した場合AjaxLinkのIntelliJを文句

'org.apache.wicket.IGenericComponent' で 'setDefaultModel(IModelをモデル)' と 'org.apache.wicket.MarkupContainer' 衝突の 'setDefaultModel(IModelをモデル)'; どちらの方法も同じ消去を持って、まだどちらも他を上書きしません

私はそれについて何かできることはありますか?

イェルーンSteenbeeke:

あなたは与えていないときに、このエラーが発生し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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=119321&siteId=1