Heim  >  Artikel  >  Java  >  Wie kann ich in Java 8 und höher sicher einen Long-Wert in einen Int-Wert umwandeln?

Wie kann ich in Java 8 und höher sicher einen Long-Wert in einen Int-Wert umwandeln?

Susan Sarandon
Susan SarandonOriginal
2024-10-26 09:36:30116Durchsuche

How Can I Safely Cast a Long to an Int in Java 8 and Beyond?

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:

  • Math.incrementExact(long)
  • Math.subtractExact(long, long)
  • Math.decrementExact(long)
  • Math.negateExact(long)
  • Math.subtractExact(int, int)

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn