java - EnumMap.containsValue(null) 返回真 JDK 7

标签 java enum-map

我发现了一个奇怪的行为。我正在使用 JDK 1.7。 当我打印 map.containsValue(null)

虽然我的 MAP 中没有任何空值,但它返回 true

import java.util.EnumMap;
import java.util.Map;

public class EnumMapTest {
    enum EnumType {
        ZERO, ONE, TWO
    }

    public static void main(String[] args) {
        Map<EnumType, Integer> map = new EnumMap<EnumType, Integer>(EnumType.class);
        map.put(EnumType.ZERO, 0);
        System.out.println(map.containsValue(null));
    }
}

最佳答案

这是 openjdk 实现中的一个错误。 Consider this link

理想情况下它应该只给出 false See this 1.7 SE

它说 Returns: true if this map maps one or more keys to this value

对我来说它给出 false - 在 JRE1.7.0_55 上运行

关于java - EnumMap.containsValue(null) 返回真 JDK 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28737815/

相关文章:

java - 将原始值存储在 EnumMap 中

java - EnumMap 与属性

java - EnumMap 在 Java 中与枚举类型值一起使用是否等效?

java - 一对多单向关系的外键约束问题

java - 通用解析器返回 HashMap 而不是 Pojo

java - 恢复 HyperSQL 数据库

java - 如何使用 Guava 初始化空的 ImmutableEnumMap?

java - 当日期时间存储为文本时,如何查找 sqlite 数据库的最后/7/30 天记录?

java - 如何动态生成bean列表

Java - 当枚举本身可以用作映射时为什么要使用 EnumMap?