Rumah > Java > javaTutorial > 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
Lepaskan: 2024-10-26 09:36:30
asal
226 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan