我有一个Java程序,可以执行许多小型数组操作。我运行它并验证它没有产生任何错误,但它比预期慢。我假设很多这种减速与检查数组边界等有关。
有没有办法禁用所有错误检查,以便我可以更快地运行我的程序(有可能它崩溃,而不是产生可理解的错误)?
答案 0 :(得分:2)
不,这是不可能的。 Java语言规范描述了强制转换和数组访问抛出异常的情况,但未提及禁用此行为的机制。
JLS Section 15.6中描述了ClassCastException
的投掷:
中描述了数组边界检查
- 如果在运行时发现强制转换,则强制转换表达式(第15.16节)会抛出ClassCastException。
在运行时,对数组访问表达式的评估表现如下:
首先,计算数组引用表达式。如果此评估突然完成,则数组访问会因同样的原因而突然完成,并且不会评估索引表达式。
否则,将评估索引表达式。如果此评估突然完成,则阵列访问会因同样的原因突然完成。
否则,如果数组引用表达式的值为null,则抛出NullPointerException。
否则,数组引用表达式的值确实是指数组。如果索引表达式的值小于零,或大于或等于数组的长度,则抛出
ArrayIndexOutOfBoundsException
。否则,数组访问的结果是数组中类型T的变量,由索引表达式的值选择。
答案 1 :(得分:0)
不可能这不可能,因为如果出现错误,这会破坏JVM。