规约原文
(五) 集合处理
- 【强制】关于hashCode和equals的处理,遵循如下规则: 1) 只要重写equals,就必须重写hashCode。 2) 因为Set存储的是不重复的对象,依据hashCode和equals进行判断,所以Set存储的对象必须重写这两个方法。 3) 如果自定义对象做为Map的键,那么必须重写hashCode和equals。 说明:String重写了hashCode和equals方法,所以我们可以非常愉快地使用String对象作为key来使用。
问题描述
IdentityHashMap使用使用System.identityHashCode计算对象的hash,并且在比较key时不使用equal,因此该条规约不应该涉及IdentityHashMap, 相关插件在检查到map对象是IdentityHashMap时应该屏蔽相关告警
修改建议
规约以及相关插件针对Identityhashmap特殊处理
1条答案
按热度按时间x6492ojm1#
IdentityHashMap类不完全遵循Map的约定却实现了Map接口……这属于java早期的乱拉屎行为之一。
唉。
完全不建议使用这个类。
也不值得为了这玩意专门做特殊处理。
并且也没有任何手段能做这种特殊处理。