我有以下代码:
boolean needToAddToMap = false;
Required required;
synchronized(requiredMap)
{
if (requiredMap.containsKey(userId))
{
required = parserSetAndActionsMap.get(userId);
}
else
{
logger.warning("userId not found in map, adding now.");
needToAddToMap = true;
}
}
if (needToAddToMap)
{
required = addNewRequired(userId);
}
Run Code Online (Sandbox Code Playgroud)
后来我使用required但得到一个错误,即使"required"已经明确初始化.这可以被认为是编译器中的一个错误,但我知道捕获所有情况在计算上是困难的(甚至是不可能的).
有几种可能的解决方案:
这些解决方案都不是理想的,最好的解决方案是什么?还有其他方法吗?
\n\n\n避免 \xe2\x80\x9c 变量的最佳实践可能尚未初始化\xe2\x80\x9d?
\n
为了避免它,你必须初始化它,我不认为将它设置为null会给你带来任何损失,或者会给你带来任何不好的结果,但它肯定会阻止它导致和引发此异常。
请记住,局部变量在使用之前应先用值进行初始化。
\n\n所以只需将其初始化为null:
Required required= null ;\nRun Code Online (Sandbox Code Playgroud)\n\n所以你可以在你的声明中使用它if。