У чому різниця між HashMap та Hashtable
Джерело: Medium Сьогодні ви дізнаєтеся відповідь на одне з найпопулярніших питань на співбесідах з Java: яка різниця між HashMap і Hashtable.Як знайти і виправити виняток NullPointerException в Java
Джерело: Theflashreads Прочитавши цю статтю, ви зможете краще розбиратися в пошуку та виправленні поширеної помилки в Java-коді - виключення NullPointerException.Що таке виняток NullPointerException?
java.lang.NullPointerException є винятком часу виконання Java. Воно виникає, коли відбувається спроба доступу до змінної, яка не вказує на жодний об'єкт і ні на що не посилається, тобто вона дорівнює нулю. Оскільки NullPointerException це виняток часу виконання, його не потрібно перехоплювати та обробляти явно у коді програми.За яких обставин виникає NullPointerException?
NullPointerException виникає у ситуації, коли робиться спроба доступу до неініціалізованому об'єкту. Як мовилося раніше, це відбувається, коли посилання об'єкт нікуди веде і має нульове значення. Ось деякі з найбільш поширених сценаріїв виключення NullPointerException :- Доступ до властивостей нульового об'єкта.
- Викидання null з методу, що видає виняток.
- Неправильна конфігурація для інфраструктур застосування залежностей, наприклад: (Spring).
- Передача нульових параметрів метод.
- Викликає методи для нульового об'єкта.
- Використання synchronized для нульового об'єкта.
- Доступ до елемента index (наприклад, масив) нульового об'єкта.
Приклад виключення 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 можна уникнути, використовуючи такі перевірки та превентивні методи:-
Переконайтеся, що об'єкт правильно ініціалізований, додавши null перевірку перед зверненням до його методів або властивостей.
-
Використовуйте 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 .