---
tags:
  - зрелость/🌱
date:
  - - 2023-11-20
zero-link:
  - "[[00 Java разработка]]"
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`.