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. Dies beinhaltete den Vergleich des Umwandlungsergebnisses mit dem ursprünglichen Long-Wert:
<code class="java">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; }</code>
In Java 8 und höher wurde jedoch ein „Math.toIntExact()“ verwendet发生溢出时会抛出ArithmeticException:
<code class="java">import static java.lang.Math.toIntExact; long foo = 10L; int bar = toIntExact(foo);</code>
Zusätzliche überlaufsichere Methoden in Java 8
Zusätzlich zu toIntExact() führte Java 8 mehrere andere Überläufe ein -sichere Methoden, 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:
Durch Verwendung von Math.toIntExact () und diese zusätzlichen überlaufsicheren Methoden können Sie lange Werte sicher in int umwandeln und arithmetische Operationen ausführen, ohne dass das Risiko besteht, dass Informationen verloren gehen.
Das obige ist der detaillierte Inhalt vonWie kann ich in Java 8 und höher sicher einen Long-Wert in einen Int-Wert umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!