Почему assert используется в методе Integer.valueOf класса Integer?
Я копался в том, какInteger
класс на самом деле использует кэшированные объекты, и я нашел следующий код вInteger.valueOf
метод:
public static Integer valueOf(int i) {
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
Мой вопрос:
какая польза отassert IntegerCache.high >= 127;
Я прочитал этоAssert предоставляет эффективный способ обнаружения и исправления ошибок программирования, Но это код времени выполнения, так зачем кому-то использовать assert?И когда это броситAssertionError
по этому сценарию?