Lorsque l'on regarde le code source de Integer.parseInt(String s, int radix)
(java 8, 1.8.0_131), j'ai trouvé le commentaire suivant du bloc:
/*
* WARNING: This method may be invoked early during VM initialization
* before IntegerCache is initialized. Care must be taken to not use
* the valueOf method.
*/
Bien que je comprenne la première partie sur la IntegerCache, je ne comprends pas pourquoi il y a un avertissement sur l' valueOf
, et pourquoi dans ce contexte.
Je vois qu' valueOf()
s'appuie sur parseInt()
, mais je ne comprends toujours pas pourquoi il y a cet avertissement.
Quelqu'un peut m'expliquer ce qu'est exactement le commentaire me prévient (et le contexte où valueOf ne doit pas être utilisée), et de ce qui pourrait aller mal.
Edit:
Le code en Entier.valueOf(int i) semble avoir changé depuis l'autre question dans le commentaire ci-dessous a été demandé, il est maintenant
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
et doit être enregistrer à partir de l'affirmation d'erreur avant.