digital-garden/knowledge/dev/java/Сравнение константы слева.md

62 lines
1.8 KiB
Markdown
Raw Normal View History

2024-06-13 21:01:37 +03:00
---
tags:
- зрелость/🌱
date:
- - 2023-11-20
zero-link:
2024-09-01 20:49:54 +03:00
- "[[../../../garden/ru/meta/zero/00 Java разработка]]"
2024-06-13 21:01:37 +03:00
parents:
linked:
article: https://note.struchkov.dev/sravnitie-konstanty-slieva/
---
Представьте, что у вас есть 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
}
```
Вроде бы все отлично, миссия выполнена. Но есть одно НО. Что если `getStatus()`вернет вам `null`? Правильно, вы получите `NullPointerException`.
Чтобы этого избежать следует придерживаться правила "Сравнения константы слева". Оно очень простое. В нашем примере, мы точно уверены, что `UserStatus.ONLINE` существует, поэтому `.equals()` стоит вызывать от него.
```java
if (UserStatus.ONLINE.equals(user.getStatus())) {
// to do something
}
```
В остальных подобных ситуациях делайте также, например со строками:
```java
if ("Иванов".equals(user.getLastName())) {
// to do something
}
```
Это простое правило защитит вас от `NullPointerException`.