Rom*_*man 0 java compiler-errors initialization
我有以下代码:
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());
Run Code Online (Sandbox Code Playgroud)
编译器抱怨最后一行.它写道"变量tmpBrowser可能尚未初始化".如果我评论最后一行,编译不会抱怨.
如果没有players
,则tmpBrowser
不会以任何方式初始化.编译器无法预测是否有任何玩家.此外,与字段(在方法块外部声明的类/实例变量)相反,局部变量(在方法块内声明)将不会使用默认值进行预初始化.您需要通过自己预先初始化编译器来使编译器满意:
ServiceBrowser tmpBrowser = null;
Run Code Online (Sandbox Code Playgroud)
(不要忘记以前做过零检查getStatus()
,否则你可能冒着NPE的风险).
归档时间: |
|
查看次数: |
176 次 |
最近记录: |