我有以下代码:

for (RoomProperties RP : roomHashMap.values()) {
    canvas.drawRect(RP.left, RP.top, RP.right, RP.bottom, snowWhite);
}


它已正确编译。但是将不会绘制矩形,因此我进入了调试模式,并确定有以下错误:

RP.left找不到局部变量“ RP”
RP.right找不到局部变量“ RP”

现在,这实际上是令人困惑的。假设我没有获得每项权利,但是为什么要编译并运行它?

做foreach的正确方法是什么?编译器未报告错误(我可能忽略了警告)是怎么回事?

最佳答案

我怀疑您看到的找不到本地变量消息是调试器通知您它无法为您解析本地变量。在那种情况下,它根本不是运行时问题,并且可以通过确保在启用“生成调试信息”或类似选项的情况下编译Java代码来轻松解决。这会将更多信息添加到已编译的代码中,以帮助调试器。祝您调试顺利!

关于java - 使用Hashmap调试foreach时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46706649/

10-10 19:05