GWT LinkedHashMap.clone () проблема - PullRequest
0 голосов
/ 28 сентября 2011

Недавно столкнулся с интересной проблемой.Я перехватил ClassCastException при выполнении этого кода:

LinkedHashMap<Tag, Boolean> tags = new LinkedHashMap<Tag, Boolean>();
...
LinkedHashMap<Tag, Boolean> tagsCopy = (LinkedHashMap<Tag, Boolean>)tags.clone();//exception on this line

В режиме разработки он работает просто отлично, но иногда почему-то не получается.Решил это путем создания мелкой копии вручную.Но мне все еще интересно, что вызвало такое поведение.Есть идеи?

UPD забыл упомянуть, я использую java.util.LinkedHashMap.

Ответы [ 2 ]

3 голосов
/ 28 сентября 2011

clone не поддерживается GWT, см. выпуск 1843 в системе отслеживания проблем GWT. Он работает в режиме разработки, так как в этом режиме выполняется простой Java-код, в то время как в работе выполняется сгенерированный JavaScript, для которого не создается рабочая реализация клона. В выпуске 1843 года приведены некоторые предложения по созданию совместимой с GWT версии, но на самом деле эти предложения не реализованы в GWT.

0 голосов
/ 20 января 2012

С GWT 2.4, LinkedHashMap.clone() возвращает HashMap. Попробуйте использовать Map<...> = (Map<...>) anyOtherMap.clone(); в общем случае, чтобы избежать таких проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...