Sicheres Umwandeln von Long in Int in Java (aktualisiert für Java 8)
In Java kann es möglicherweise zu einem Umwandeln von Long in Int kommen bei Datenverlust. Um dieses Problem anzugehen, ist ein sicherer und idiomatischer Ansatz unerlässlich.
Math.toIntExact()-Methode von Java 8
Vor Java 8 die empfohlene Methode zum sicheren Umwandeln Ein long to an int bestand darin, das Ergebnis auf möglichen Informationsverlust zu überprüfen. Dazu gehörte der Vergleich des Umwandlungsergebnisses mit dem ursprünglichen Long-Wert:
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;
}
In Java 8 und höher gilt jedoch a更为简洁有效的方法已被引入:Math.toIntExact()方法。此方法在发生溢出时会抛出ArithmeticException:
import static java.lang.Math.toIntExact;
long foo = 10L;
int bar = toIntExact(foo);
Zusätzliche überlaufsichere Methoden in Java 8
Zusätzlich zu toIntExact() wurden in Java 8 mehrere andere überlaufsichere Methoden eingeführt die mit „exact“ enden. Diese Methoden führen Operationen wie Addition, Subtraktion, Negation und Dekrementierung aus und prüfen dabei auf mögliche Überläufe:
By Mit Math.toIntExact() und diesen zusätzlichen überlaufsicheren Methoden können Sie lange Werte sicher in int umwandeln und arithmetische Operationen ohne ausführen Risiko des Informationsverlusts.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3