Rumah  >  Artikel  >  Java  >  Bagaimanakah Saya Boleh Hantar Panjang dengan Selamat ke Int dalam Java 8 dan Seterusnya?

Bagaimanakah Saya Boleh Hantar Panjang dengan Selamat ke Int dalam Java 8 dan Seterusnya?

Susan Sarandon
Susan Sarandonasal
2024-10-26 09:36:30116semak imbas

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

Menyalurkan Long ke Int dengan Selamat di Java (Dikemas kini untuk Java 8 )

Di Java, penghantaran dari long ke int berpotensi menghasilkan dalam kehilangan data. Untuk menangani kebimbangan ini, pendekatan yang selamat dan idiomatik adalah penting.

Kaedah Java 8's Math.toIntExact()

Sebelum Java 8, kaedah yang disyorkan untuk menghantar dengan selamat lama ke int adalah untuk menyemak keputusan untuk potensi kehilangan maklumat. Ini melibatkan membandingkan hasil lakonan dengan nilai panjang asal:

<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>

Walau bagaimanapun, dalam Java 8 dan ke atas, a更为简洁有效的方法已被引入:Math.toIntExact()方喹法。法。发生溢出时会抛出Pengecualian Aritmetik:

<code class="java">import static java.lang.Math.toIntExact;

long foo = 10L;
int bar = toIntExact(foo);</code>

Kaedah Limpahan-Selamat Tambahan di Java 8

Selain daripada beberapa limpahan IntExact(), Java 8 lain yang diperkenalkan -kaedah selamat yang berakhir dengan "tepat". Kaedah ini melaksanakan operasi seperti penambahan, penolakan, penolakan dan penyusutan semasa menyemak potensi limpahan:

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

Dengan menggunakan Math.toIntExact () dan kaedah selamat limpahan tambahan ini, anda boleh menghantar nilai panjang ke int dengan selamat dan melakukan operasi aritmetik tanpa risiko kehilangan maklumat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Hantar Panjang dengan Selamat ke Int dalam Java 8 dan Seterusnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn