Ответ
NullPointerException (NPE) — это исключение времени выполнения, которое возникает при попытке использовать ссылку, имеющую значение null, как если бы она ссылалась на реальный объект.
Типичные причины:
- Вызов метода у
null-ссылки:String text = null; int length = text.length(); // NPE - Доступ к полю или изменение поля
null-объекта:User user = null; String name = user.name; // NPE - Индексация
null-массива:int[] numbers = null; int first = numbers[0]; // NPE - Получение длины
null-массива:String[] items = null; int count = items.length; // NPE - Синхронизация на
null-объекте:Object lock = null; synchronized(lock) { // NPE // ... }
Стратегии предотвращения:
- Явные проверки:
if (obj != null) { ... } - Использование
Optional(Java 8+): Для явного обозначения возможного отсутствия значения. - Аннотации
@Nullableи@NonNull: Например, из библиотек Lombok или JetBrains, для статического анализа. - Валидация входных параметров: Гарантировать контракты методов.
- Использование
Objects.requireNonNull(): Для быстрой проверки аргументов.
NPE — это ошибка программиста, указывающая на недостаточную проверку условий в коде.