gpt4 book ai didi

java - 在使用 2 个不同的 HashMap 时,我可以使用第一个而不是第二个创建一个 keySet

转载 作者:行者123 更新时间:2023-12-01 17:18:46 26 4
gpt4 key购买 nike

我在一个类中使用 2 个不同的 HashMap,当我使用第一个(getExitString())调用 keySet() 方法时 方法),它工作正常,但是当我用第二个(getLockedDoors() 方法)调用它时,我得到“找不到符号 - 方法 keySet()”错误。我怎样才能解决这个问题?谢谢!相关代码如下。

import java.util.HashMap;
import java.util.Set;

public class Room
{
private HashMap<String, Room> exits;
private HashMap<String, LockedDoor> lockedDoors;

public String getExitString() {
String exitReturn = "";
Set<String> exitSet = exits.keySet();
for (String eachExit : exitSet) {
exitReturn = exitReturn + eachExit + " ";
}
return exitReturn;
}

public String getLockedDoorString() {
String lockedDoors = "";
Set<String> doorSet = lockedDoors.keySet();
for (String door : doorSet) {
lockedDoors = lockedDoors + door + " ";
}
return lockedDoors;
}

最佳答案

在失败的行,lockdoors 解析为字符串而不是 HashSet 表达式。

这是因为局部变量遮蔽了同名的成员变量。

String lockedDoors = "";                     // shadowed here
Set<String> doorSet = lockedDoors.keySet(); // and String.keySet() is bogus

解决方案:您可以为局部变量使用不同的名称(推荐,IMO),或者使用 this 关键字来引用实例级变量(经常需要的概念)。这是一个示例。

String lockedDoors = "";
Set<String> doorSet = this.lockedDoors.keySet();

关于java - 在使用 2 个不同的 HashMap 时,我可以使用第一个而不是第二个创建一个 keySet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20279426/

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