0

最近、興味深い問題に直面しました。このコードの実行中に 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 を使用しています。

4

2 に答える 2

3

cloneGWT ではサポートされていません。GWT イシュー トラッカーの問題 1843を参照してください。開発モードでは、プレーンな Java コードが実行されるのと同じように機能しますが、本番環境では生成された JavaScript が実行され、クローンの動作する実装は生成されません。issue 1843 には、GWT 互換バージョンを作成するためのいくつかの提案がありますが、これらの提案は実装された GWT には含まれていません。

于 2011-09-28T07:32:22.713 に答える
0

GWT 2.4 では、 をLinkedHashMap.clone()返しますHashMapMap<...> = (Map<...>) anyOtherMap.clone();このような問題を回避するために、一般的なケースで使用してみてください。

于 2012-01-20T00:19:27.220 に答える