据我了解,以下代码应在进行基于false的比较时打印identity

但是,当我运行以下代码时,它正在打印true:

public class Test1 {
  public static void main(String[] args) {
    IdentityHashMap m = new IdentityHashMap();
    m.put("A", new String("B"));
    System.out.println(m.remove("A", new String("B")));
  }
}

有人可以帮助我理解为什么这种行为吗?

最佳答案

您实际上遇到了JDK中的错误,请参见JDK-8178355IdentityHashMap没有通过默认方法添加到remove(K,V)Map方法的自定义实现,这会导致此问题。

关于java - IdentityHashMap返回的值不正确-为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44671737/

10-10 00:10