जावा में लॉन्ग से इंट तक सुरक्षित रूप से कास्टिंग करना (जावा 8 के लिए अपडेट किया गया)
जावा में, लॉन्ग से इंट तक कास्टिंग करना संभावित परिणाम हो सकता है डेटा हानि में. इस चिंता को दूर करने के लिए, एक सुरक्षित और मुहावरेदार दृष्टिकोण आवश्यक है। संभावित सूचना हानि के लिए परिणाम की जांच करने के लिए एक लंबा समय था। इसमें कास्ट परिणाम की तुलना मूल long मान से करना शामिल था:
public static intsafeLongToInt(long l) { int i = (int) l; यदि ((लंबा) i != l) { नया IllegalArgumentException फेंकें(l "इसके मान को बदले बिना int में नहीं डाला जा सकता।"); } वापसी मैं; }
हालाँकि, जावा 8 और इसके बाद के संस्करण में, एक नया विकल्प: Math.toIntExact() विधि, अंकगणित अपवाद: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;
}
जावा 8 में अतिरिक्त अतिप्रवाह-सुरक्षित तरीके
import static java.lang.Math.toIntExact;
long foo = 10L;
int bar = toIntExact(foo);
Math.incrementExact(long)
Math.subtractExact(long, long)Math.decrementExact(long)अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3