gpt4 book ai didi

java - 为什么声明相似的对象名和HashMap没有冲突?

转载 作者:行者123 更新时间:2023-11-29 09:37:35 26 4
gpt4 key购买 nike

我有一个问题。为什么下面的代码因为变量冲突不能用eclipse运行?

PdfPTable testObj1 = new PdfPTable(6);
PdfPTable testObj1 = new PdfPTable(6);

但如果我将 HashMap 与循环一起使用,它将起作用:

Map<String, PdfPTable> hash = new HashMap<>();

for (i = 1; i <= 1; i++){
hash.put("testObj" + String.valueOf(i), new PdfPTable(6));
hash.put("testObj" + String.valueOf(i), new PdfPTable(6));
}

有人可以向我解释为什么底部示例可以运行吗?提前致谢。

最佳答案

在第一种情况下,您在编译时创建具有特定变量名称的变量。因此,如果您在同一范围内有 2 个同名变量,您的编译器会抛出错误。

在第二种情况下,您实际上使用字符串作为 HashMap 的键。在 HashMap 中使用相同的键会导致覆盖为该键存储的旧值。即使那样,这也与这里的变量名无关。

除了你的第二个例子你也可以写

Map<String, PdfPTable> hash = new HashMap<>();
hash.put("testObj1", new PdfPTable(6));
hash.put("testObj1", new PdfPTable(6));

这应该表明您实际上正在用第二个新实例覆盖 PdfPTable 的第一个实例。

关于java - 为什么声明相似的对象名和HashMap没有冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33258986/

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