【发布时间】:2026-01-07 14:50:01
【问题描述】:
在查看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 的上下文),以及可能出错的地方。
编辑:
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);
}
并且应该从之前的断言错误中保存。
【问题讨论】:
-
assert 似乎没有在 java8 Integer.valueOf() @Blasanka 中使用,你能解释一下重复投票吗,或者指向我仍然等于链接中的代码的代码欺骗目标?
标签: java