为什么这段代码编译成功并运行成功,似乎它应该得到一个超出范围的索引

fac*_*_14 2 java arrays exception

我正在阅读我正在处理的项目中的一些java代码,并且在其中提供了一些具有此效果的方法.

Object[] objs = null;
objs[0] = str1;
objs[1] = obj1;
for(String str: strArray)
{
    objs[objs.length+1] = str;
}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚这里发生了什么.我希望有人可以解释这段代码对我的影响,最好是在高级别和幕后低级别.

Coo*_*une 7

那应该不会运行.objs [0]会出错.

您确定您运行的是正确版本的文件吗?


Jon*_*eet 6

这在Java中没有希望.我怀疑"这种效果"与实际代码略有不同,如果它似乎有效.一些问题:

  • NullPointerException当您尝试取消引用变量时,显然应该在第二行上抛出一个
  • objs[objs.length+1] 不扩展数组,这似乎是意图 - 数组在分配后是固定大小.
  • 即使数组可以扩展,它们也是基于0的,所以你实际上想要通过设置扩展它们objs[objs.length]- 如果这个代码有效,你最终会得到所有其他元素"缺失"