ความแตกต่างระหว่าง HashMap และ Hashtable คืออะไร
ที่มา: ปานกลาง วันนี้คุณจะได้เรียนรู้คำตอบของหนึ่งในคำถามสัมภาษณ์ Java ที่ได้รับความนิยมมากที่สุด: อะไรคือความแตกต่างระหว่าง HashMap และ Hashtable
วิธีค้นหาและแก้ไข NullPointerException ใน Java
ที่มา: Theflashreads หลังจากอ่านบทความนี้ คุณจะสามารถค้นหาและแก้ไขข้อผิดพลาดทั่วไปในโค้ด Java - NullPointerException ได้ดีขึ้น
NullPointerException คืออะไร
java.lang.NullPointerExceptionเป็นข้อยกเว้นรันไทม์ใน Java มันเกิดขึ้นเมื่อมีความพยายามในการเข้าถึงตัวแปรที่ไม่ได้ชี้ไปยังหรืออ้างอิงถึงวัตถุใด ๆ นั่นคือมันเป็นโมฆะ เนื่องจากNullPointerExceptionเป็นข้อยกเว้นรันไทม์ จึงไม่จำเป็นต้องถูกจับและจัดการอย่างชัดเจนในโค้ดของแอปพลิเคชันNullPointerException เกิดขึ้นภายใต้สถานการณ์ใด
NullPointerExceptionเกิดขึ้นเมื่อมีความพยายามในการเข้าถึงวัตถุที่ไม่ได้เตรียมใช้งาน ดังที่กล่าวไปแล้ว สิ่งนี้เกิดขึ้นเมื่อไม่มีการอ้างอิงวัตถุและมีค่าว่าง ต่อไปนี้เป็นสถานการณ์ข้อยกเว้น NullPointerExceptionที่พบบ่อยที่สุดบางส่วน:- เข้าถึงคุณสมบัติของวัตถุ null
- การโยนค่าว่างจากวิธีการที่ส่งข้อยกเว้น
- การกำหนดค่าไม่ถูกต้องสำหรับเฟรมเวิร์กการฉีดการขึ้นต่อกัน เช่น: (Spring)
- การส่งผ่านพารามิเตอร์ null ไปยังเมธอด
- วิธีการเรียกบนวัตถุ null
- การใช้การซิงโครไนซ์กับวัตถุว่าง
- เข้าถึงองค์ประกอบดัชนี (เช่น ในอาร์เรย์) ของวัตถุว่าง
ตัวอย่าง NullPointerException
ในตัวอย่างนี้ เรากำลังพยายามเรียกใช้ เมธอดprintLengthซึ่งรับสตริงเป็นพารามิเตอร์และพิมพ์ความยาว หากค่าของสตริงที่ส่งผ่านเป็นพารามิเตอร์เป็นโมฆะjava.lang.NullPointerException จะถูกส่งออก ไปpublic class NullPointerExceptionExample {
private static void printLength(String str) {
System.out.println(str.length());
}
public static void main(String args[]) {
String nullString = null;
printLength(nullString);
}
}
Exception in thread "main" java.lang.NullPointerException
at NullPointerExceptionExample.printLength(NullPointerExceptionExample.java:3)
at NullPointerExceptionExample.main(NullPointerExceptionExample.java:8)
วิธีหลีกเลี่ยงการขว้าง NullPointerException
NullPointerException สามารถหลีกเลี่ยงได้โดยใช้ การตรวจสอบและวิธีการป้องกันต่อไปนี้:-
ตรวจสอบให้แน่ใจว่าวัตถุได้รับการเตรียมใช้งานอย่างถูกต้องโดยการเพิ่ม การตรวจสอบ ค่าว่างก่อนที่จะเข้าถึงวิธีการหรือคุณสมบัติ
-
ใช้ Apache Commons StringUtils สำหรับการดำเนินการกับสตริง: ตัวอย่างเช่นStringUtils.isNotEmpty()เพื่อตรวจสอบว่าสตริงว่างเปล่าหรือไม่ก่อนนำไปใช้เพิ่มเติม
import org.apache.commons.lang3.StringUtils; public class NullPointerExceptionExample { private static void printLength(String str) { if (StringUtils.isNotEmpty(str)) { System.out.println(str.length()); } else { System.out.println("This time there is no NullPointerException"); } } public static void main(String args[]) { String nullString = null; printLength(nullString); } }
-
ใช้วัตถุพื้นฐานแทนวัตถุทุกครั้งที่เป็นไปได้ เนื่องจากไม่สามารถมีการอ้างอิงที่เป็นโมฆะได้ ตัวอย่างเช่นใช้intแทนIntegerและbooleanแทนBoolean
-
ตรวจสอบให้แน่ใจว่าคุณตรวจสอบรหัสของคุณอีกครั้ง วิธีนี้จะช่วยลดโอกาสที่NullPointerException จะถูกโยน ทิ้ง
GO TO FULL VERSION