Casting en toute sécurité d'un long vers un int en Java (mis à jour pour Java 8)
En Java, le cast d'un long vers un int peut potentiellement entraîner en perte de données. Pour répondre à ce problème, une approche sûre et idiomatique est essentielle.
Méthode Math.toIntExact() de Java 8
Avant Java 8, la méthode recommandée pour lancer en toute sécurité un long vers un int était de vérifier le résultat pour détecter une perte potentielle d'informations. Cela impliquait de comparer le résultat de la conversion avec la valeur longue d'origine :
public static int safeLongToInt(long l) {
int i = (int) l;
if ((long) i != l) {
throw new IllegalArgumentException(l " cannot be cast to int without changing its value.");
}
return i;
}
Cependant, dans Java 8 et supérieur, un importation statique java.lang.Math.toIntExact; foo long = 10L ; int bar = toIntExact(foo);
import static java.lang.Math.toIntExact;
long foo = 10L;
int bar = toIntExact(foo);
En plus de toIntExact(), Java 8 a introduit plusieurs autres méthodes anti-débordement qui se terminent par "exact". Ces méthodes effectuent des opérations telles que l'addition, la soustraction, la négation et la décrémentation tout en vérifiant les débordements potentiels :
Math.incrementExact(long)
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3