NullPointerException ที่พบในโครงการแบ่งออกเป็นสองสถานการณ์:
1. อ้างอิงถึงวัตถุว่าง กล่าวคือ เรียกเมธอดของวัตถุว่างหรืออ้างอิงถึงคุณสมบัติของวัตถุว่าง
2. กำหนดคลาสการห่อหุ้มของประเภทพื้นฐานใน 8 ให้กับคลาสพื้นฐานที่เกี่ยวข้อง
1. เราจำเป็นต้องทำการตัดสินที่ไม่ใช่ค่าว่างกับออบเจ็กต์ที่ส่งคืนโดยอินเทอร์เฟซของบุคคลอื่น เนื่องจากเราไม่รู้ว่าออบเจ็กต์ที่ได้รับจะว่างเปล่าหรือไม่ สำหรับ Collection Map ฉันมักจะเรียก CollectionUtils MapUtils สำหรับออบเจ็กต์ String ที่ส่งคืน I จะเรียก StringUtils.isNotEmpty( ) เพื่อดำเนินการตัดสินที่ไม่ว่างเปล่า ในหมู่พวกเขา isNotEmpty ไม่เพียงแต่ตัดสิน NULL เท่านั้น แต่ยังตัดสินชุดว่างและสตริงว่างด้วย เช่น การสืบค้นผลลัพธ์จากข้อมูล URL ราคาส่งคืนในเวิร์กโฟลว์
2. สำหรับออบเจ็กต์ที่คุณสร้าง คุณควรใส่ใจกับการดำเนินการที่ออบเจ็กต์ดำเนินการ และว่าออบเจ็กต์จะว่างเปล่าตรงกลางหรือไม่ หากเป็นไปได้ ให้เพิ่มการตัดสินที่ไม่เป็นโมฆะ โดยเฉพาะอย่างยิ่งสำหรับการดำเนินการรวบรวม ทำให้ง่ายต่อการรายงาน ตัวชี้ว่าง! - - ดังนั้นทุกครั้งที่ฉันดำเนินการสะสม ฉันจะระมัดระวังให้มาก
3. ระมัดระวังอย่างมากเกี่ยวกับออบเจ็กต์ฟิลด์ในเบื้องหน้า เนื่องจากออบเจ็กต์เหล่านี้ถูกสร้างขึ้นโดยกรอบงาน หากฉันไม่ป้อนค่าในกล่องข้อความในเบื้องหน้า แม้ว่าแบ็กเอนด์จะได้รับสตริงว่างเมื่อส่ง ความน่าจะเป็น ของ NullPointerException นั้นสูงมาก
4. สำหรับการดำเนินการกับ String ให้ลองใช้คลาส StringUtils ของ apache เมื่อเปรียบเทียบกับ String แล้ว สิ่งนี้จะปลอดภัยมาก สำหรับการดำเนินการรวบรวม ให้ใช้ CollectionUtils และ MapUtils ของ apache เมื่อเปรียบเทียบกับคลาสเครื่องมือ apache ประสิทธิภาพการดำเนินการก็สูงมากเช่นกัน เช่น StringUtils.split();
บางคนบอกว่าการตัดสินที่มากเกินไปจะส่งผลต่อประสิทธิภาพ โดยส่วนตัวแล้วฉันคิดว่าการเสียสละประสิทธิภาพที่นี่มีน้อยมากเมื่อเทียบกับความปลอดภัยของระบบ