gpt4 book ai didi

java - 对 HashTable 的 assertNull 行为感到困惑

转载 作者:行者123 更新时间:2023-11-30 09:19:03 24 4
gpt4 key购买 nike

在一些 JUnit 修复过程中,我发现了这行代码:

Assert.assertNull(lAllEntryById.put(lEntry.getId(), lEntry));

如果我检查 lAllEntryById.put(lEntry.getId(), lEntry) 操作,结果始终为空,但 assertNull 仍然失败。

当我将代码更改为:

 Entry lEntry = lAllEntryById.put(lEntry.getId(), lEntry);
Assert.assertNull(lEntry);

一切正常。

我有点懵。你能告诉我为什么上面几行代码会得到两个不同的结果吗?

非常感谢...

最佳答案

这些行在断言中有相同的结果:

Assert.assertNull(lAllEntryById.put(lEntry.getId(), lEntry));

还有这个

Entry lEntry = lAllEntryById.put(lEntry.getId(), lEntry);
Assert.assertNull(lEntry);

问题可能是由于:

  1. 忘记在添加新元素之前清除表(然后 put 返回旧对象)

  2. 您可以依次执行一条语句和一条语句

为了避免这种情况,我建议进行以下实验:

lAllEntryById = new HashTable<EntryId, Entry>(); // ensure nothing effects it
Assert.assertNull(lAllEntryById.put(lEntry.getId(), lEntry));

关于java - 对 HashTable 的 assertNull 行为感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18143855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com