gpt4 book ai didi

java - HashMap 实现中的泛型

转载 作者:行者123 更新时间:2023-12-01 06:34:44 25 4
gpt4 key购买 nike

在Java实现中,我发现

 transient Entry[] table; 
which is initiated in constructor as
table = new Entry[capacity];

我知道并理解不允许创建通用数组,但我不明白的是整个事情是如何工作的。我的意思是当我们做类似的事情

HashMap<Integer, String> hMap = new HashMap<Integer, String>();

上述代码如何创建 <Integer, String> 类型的 Entry 数组

好吧,很少有人无法理解我在问什么。换句话来说,我要问的是做这样的事情有什么意义

HashMap<Integer, String> hMap = new HashMap<Integer, String>();

当它没有导致

Entry<Integer, String>

最佳答案

泛型是编译时安全的。在运行时, map 只知道对象。这称为类型删除。更让你害怕的是,下面的代码将毫无问题地运行:

Map<Integer, Integer> safeMap = new HashMap<>();
Map unsafeMap = safeMap;
unsafeMap.put("hello", "world");

您将在编译时收到警告,因为您使用的是原始映射而不是通用映射,但在运行时,根本不进行任何检查,因为该映射是一个很好的旧映射,能够存储任何目的。只有编译器会阻止您在映射中添加字符串或整数。

关于java - HashMap 实现中的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28125197/

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