Обычно компилятор генерирует код для выполнения бокса и распаковки. Но что делает компилятор, если значения в штучной упаковке не нужны? Является ли (стандартным) стандартным компилятором Oracle достаточно умным, чтобы оптимизировать его?
Взгляните на этот метод:
public static void requireInRange(int index, Object[] array) {
if(index < 0 || index >= array.length)
throw new IndexOutOfBoundsException();
}
Единственной релевантной информацией является array.length
, поэтому было бы бесполезно помещать каждое значение массива, например. Как в этом коде:
int[] anArray = {3, 4, 2};
requireInRange(3, anArray);
Будет ли компилятор действительно вставлять код для бокса для каждого значения массива?