gpt4 book ai didi

java - 为什么变量在循环内可见而在循环外看不到?

转载 作者:行者123 更新时间:2023-12-01 07:15:59 26 4
gpt4 key购买 nike

我有以下代码:

    String serviceType;
ServiceBrowser tmpBrowser;
for (String playerName: players) {
serviceType = "_" + playerName + "._tcp";
tmpBrowser = BrowsersGenerator.getBrowser(serviceType);
tmpBrowser.browse();
System.out.println(tmpBrowser.getStatus());
}
System.out.println(tmpBrowser.getStatus());

编译器提示最后一行。它写道“变量 tmpBrowser 可能未初始化”。如果我评论最后一行,编译不会提示。

最佳答案

如果没有玩家,则tmpBrowser无论如何都不会被初始化。编译器无法预测是否有玩家。此外,与字段(在方法 block 外部声明的类/实例变量)相反,局部变量(在方法 block 内部声明)不会使用默认值进行预初始化。您需要通过自己预初始化来让编译器满意:

ServiceBrowser tmpBrowser = null;

(不要忘记在 getStatus() 之前进行空检查,否则可能会面临 NPE 风险)。

关于java - 为什么变量在循环内可见而在循环外看不到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2470762/

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