我们可以使用Object类的实例作为HashMap中的键

问题描述 投票:0回答:1

问题很简单,就是标题:

我们可以使用Object类的实例作为HashMap中的键吗?

我不是在谈论使用任何自定义类作为键,而是在使用Object类实例作为键。如果我们可以使用它,是否需要采取任何预防措施?

java
1个回答
2
投票

是,您可以将Object的实例用作地图的键:

Map<Object, SomeOtherType> myMap = new HashMap<>();

但是这样做可能很危险,因为这意味着any类型的对象可以用作键对象,包括不可变的对象,以及如果使用的键对象是一个对象其.equals(...).hashCode()稍后可以更改,则可能会破坏地图的不良影响。这对于any映射可能具有可变键的映射是正确的。

Map API

注意:如果将可变对象用作地图键,则必须格外小心。如果在对象是映射中的键的情况下以影响等值比较的方式更改对象的值,则不会指定映射的行为。

总而言之:是的,这是可能的,但是不要这样做

© www.soinside.com 2019 - 2024. All rights reserved.