gpt4 book ai didi

java - 如何使用接口(interface)作为 map 的键

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:58:26 25 4
gpt4 key购买 nike

我正在寻求有关如何使用界面作为 map 键的帮助。我尝试实现一个解决方案,在运行集成测试时没有出现编译时错误,但出现运行时错误。是不是不能把Interface当Key使用,还是我的测试有问题?

我的代码看起来像这样

private Map<AInterface, Values> myMap = new HashMap<AInterface, Values>();

从 myMap 中检索键集后,它们确实包含具有预期 ID 的对象,但与不相等进行比较。因此,当使用 myMap.get(Object key) 时,我得到 null,尽管存在具有相同 id 的对象。当使用具体类而不是接口(interface)时,所有测试都通过了:

private Map<AClass, Values> myMap = new HashMap<AClass, Values>();

我读过 Generics其中声明对于 Map,您需要将类型变量 K 和 V 替换为作为 Object 子类型的具体类型。

由于编译器在使用 K 的接口(interface)时没有给我任何警告,所以我猜测测试有错误。

有人有在 map 中使用接口(interface)作为键的经验吗?可以给我任何关于我做错了什么的提示吗?

最佳答案

您的类必须实现 hashCodeequals(explanation;您还应该熟悉 contract of the Map-interface)。

关于java - 如何使用接口(interface)作为 map 的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1802444/

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