При просмотре исходного кода для Integer.parseInt(String s, int radix)
(java 8, 1.8.0_131) я нашел следующий блок комментариев:
/*
* WARNING: This method may be invoked early during VM initialization
* before IntegerCache is initialized. Care must be taken to not use
* the valueOf method.
*/
Пока я понимаю первую часть IntegerCache, я не понимаю, почему существует предупреждение о valueOf
и почему в этом контексте.
Я вижу, что valueOf()
полагается на parseInt()
, но я до сих пор не понимаю, почему это предупреждение.
Может кто-нибудь объяснить, что именно предупреждает меня комментарий (и контекст, где valueOf не должен использоваться), и что может пойти не так.
Edit:
Код в Integer.valueOf(int i), похоже, изменился с тех пор, как был задан другой вопрос из комментария ниже, теперь он
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
и должен быть сохранен ранее.