为什么在 Integer 类的 Integer.valueOf 方法中使用断言?
我正在深入研究该类实际如何使用缓存对象,并在该方法中找到了以下代码: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;
- 它什么时候会抛出这种情况?
AssertionError