Mengelakkan Ralat Pemangkasan Apabila Menghantar panjang ke int
Apabila menukar nilai panjang kepada int di Java, adalah penting untuk memastikan penukaran tidak membawa kepada kehilangan maklumat. Satu cara untuk mencapai ini adalah melalui semakan eksplisit, seperti yang ditunjukkan dalam pelaksanaan yang diberikan:
<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, sejak Java 8, penyelesaian yang lebih idiomatik telah diperkenalkan:
Matematik .toIntExact()
Kaedah ini membenarkan penukaran long-to-int yang selamat dengan membuang ArithmeticException apabila limpahan berlaku:
<code class="java">import java.lang.Math; ... long foo = 10L; int bar = Math.toIntExact(foo);</code>
Java 8 juga termasuk kaedah "tepat" yang serupa untuk pelbagai operasi aritmetik, memastikan ketepatan dan mengelakkan kehilangan ketepatan yang tidak dijangka:
Dengan menggunakan kaedah ini, pembangun boleh membuang panjang dengan yakin nilai kepada int tanpa risiko kehilangan data atau pengecualian masa jalan akibat limpahan.
Atas ialah kandungan terperinci Cara Selamat Menukar panjang kepada int dalam Java: `toIntExact` vs Explicit Checking?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!