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()返回一个HashMap. 尝试Map<...> = (Map<...>) anyOtherMap.clone();在一般情况下使用以避免此类问题。

于 2012-01-20T00:19:27.220 回答