2024-09-06 17:05:53 +03:00
---
aliases:
tags:
- maturity/🌱
- type/opinion
2024-09-08 00:56:18 +03:00
date: 2024-09-06
2024-09-06 17:05:53 +03:00
zero-link:
- "[[../../meta/zero/00 Java разработка|00 Java разработка]]"
parents:
linked:
---
Представьте, что у вас есть enum, который отвечает за статус пользователя в системе: "онлайн", "офлайн" и "занят".
```java
public enum UserStatus {
ONLINE, OFFLINE, BUSY
}
```
```java
public class User {
...
@Column (name = "status")
@Enumerated (EnumType.STRING)
private UserStatus status;
...
}
```
Скорее всего для выполнения бизнес-логики вам потребуется проверять статус пользователя
```java
if (user.getStatus().equals(UserStatus.ONLINE)) {
// to do something
}
```
2024-09-17 21:10:50 +03:00
Вроде бы все отлично, миссия выполнена. Н о есть одно Н О . Что если `getStatus()` вернет вам `null` ? Правильно, вы получите `NullPointerException` .
2024-09-06 17:05:53 +03:00
2024-09-17 21:10:50 +03:00
Чтобы этого избежать следует придерживаться правила "Сравнения константы слева". Оно очень простое. В нашем примере, мы точно уверены, что `UserStatus.ONLINE` существует, поэтому `.equals()` стоит вызывать от него.
2024-09-06 17:05:53 +03:00
```java
if (UserStatus.ONLINE.equals(user.getStatus())) {
// to do something
}
```
В остальных подобных ситуациях делайте также, например с о строками:
```java
if ("Иванов".equals(user.getLastName())) {
// to do something
}
```
2024-09-17 21:10:50 +03:00
Это простое правило защитит вас от `NullPointerException` .
2024-09-09 21:07:47 +03:00
***
## Мета информация
**Область**:: [[../../meta/zero/00 Java разработка|00 Java разработка]]
**Родитель**::
**Источник**::
**Автор**::
**Создана**:: [[2024-09-06]]
### Дополнительные материалы
-
### Дочерние заметки
2024-09-14 23:38:42 +03:00
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->