Vermeiden von Kürzungsfehlern beim Umwandeln von long in int
Beim Konvertieren eines long-Werts in einen int in Java ist es wichtig, sicherzustellen, dass die Konvertierung erfolgt führt nicht zu Informationsverlust. Eine Möglichkeit, dies zu erreichen, ist die explizite Prüfung, wie in der angegebenen Implementierung gezeigt:
<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>
Seit Java 8 wurde jedoch eine idiomatischere Lösung eingeführt:
Math .toIntExact()
Diese Methode ermöglicht eine sichere Long-in-Int-Konvertierung, indem bei einem Überlauf eine ArithmeticException ausgelöst wird:
<code class="java">import java.lang.Math; ... long foo = 10L; int bar = Math.toIntExact(foo);</code>
Java 8 enthält auch ähnliche „exakte“ Methoden für verschiedene arithmetische Operationen, um Genauigkeit sicherzustellen und unerwartete Präzisionsverluste zu vermeiden:
Durch die Verwendung dieser Methoden können Entwickler sicher long umwandeln Werte in int konvertieren, ohne dass das Risiko eines Datenverlusts oder von Laufzeitausnahmen aufgrund eines Überlaufs besteht.
Das obige ist der detaillierte Inhalt vonWie konvertiert man in Java sicher einen Long-Wert in einen Int-Wert: „toIntExact' vs. explizite Prüfung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!