【发布时间】:2016-01-14 12:58:45
【问题描述】:
我知道类似的问题已经被问过好几次了,他们得到了很好的回答,但是......它们大约是一维的零长度数组,例如:
int[] array = new int[0];
似乎在不应/不能使用 null 的情况下使用此类数组是有目的的。但是为什么 Java 允许创建这样的东西:
int[][][] multiDims = new int[5][0][9];
当然,就像在简单的 1D 情况下,如果我们尝试迭代或其他东西,我们不会从这样的数组中得到任何东西,我只是因为它看起来对我来说非常讨厌。 :-) 给这种无意义的生物分配了多少内存?
【问题讨论】:
-
你的问题是为什么允许还是分配了多少内存?
-
开发人员一直在编写无意义的代码,并且不可能检测到开发人员可以提出的每一个无意义的组合。
-
看来你也可以成功编译
new int[-1]ideone (但是它在运行时显然会失败)。这看起来像是 Google's error-prone 之类的工具可能会着手捕获的错误(尽管它目前看起来没有,可能是因为它太愚蠢)。 -
如果您不允许这样做,它将强制程序员对在当前规范下自然工作的情况进行特殊情况处理。