Почему класс BookmarkablePageLink является универсальным в Wicket? - PullRequest
1 голос
/ 21 февраля 2011

Кто-нибудь знает, почему класс BookmarkablePageLink является универсальным в калитке? Я создавал новый BookmarkablePageLink<Object>(...) просто чтобы избежать предупреждений компилятора.

Должен ли я выбирать другой общий тип? Краткое представление о коде еще больше смутило меня, почему он был универсальным.

Ответы [ 2 ]

5 голосов
/ 13 ноября 2011

Когда была представлена ​​Wicket 1.4, разработчики решили создать класс Component. Поскольку BookmarkablePageLink является потомком Component (как и почти все в Wicket), он также стал общим.

В руководстве по миграции Wicket 1.4 рекомендуется использовать Void в качестве универсального типа для BookmarkablePageLink s, а также другие компоненты Wicket, для которых универсальные типы на самом деле не имеют смысла.

4 голосов
/ 21 февраля 2011

Из краткого обзора javadoc похоже, что причину для дженериков можно увидеть в абстрактном суперклассе Ссылка .В частности, ссылка позволяет связать с ней объект модели универсального типа через setModelObject .Так что из их примера, когда вы переопределяете onClick :

new Link<MyObject>("myLink") {
     public void onClick()
     {
         MyObject obj = getModelObject();
         setResponsePage(new MyPage(obj));
     }
}

, вы можете получить доступ к соответствующему объекту модели.

...