注意:我很清楚初始化它可以解决问题;我只是假设编译器会遵循执行路径,并看到 foo 实际上会在它暗示它“可能”不是的点被初始化。
我最初的假设是,如果长度从不超过 3,我将永远不需要分配内存来使用它。
这永远不会在生产中使用,我只是好奇
请参阅以下示例: -
List<String> foo;
int length = 5;
if (length > 3)
{
foo = new ArrayList<String>();
}
if (length > 4)
{
foo.add("bar");
}
为什么这会导致显示以下内容?
局部变量 foo 可能尚未初始化
当然,在分支之后,永远不会出现 foo 未初始化的情况。我知道如果我要这样做:-
List<String> foo = null;
不会有编译问题,但为什么我需要这样做?