Qual anotação @NotNull em Java é melhor usar e por quê?
Olá a todos! Sou um desenvolvedor Java iniciante e estou escrevendo meu primeiro projeto sério. Enfrentei o problema de que meus métodos constantemente falham com NullPointerException porque esqueço de verificar os argumentos para null. Decidi usar as anotações @NotNull para que a IDE me avise sobre problemas potenciais, mas surgiu uma confusão.
Em diferentes projetos, vejo anotações diferentes:
- `javax.annotation.Nonnull` (do JSR 305)
- `org.jetbrains.annotations.NotNull` (do IntelliJ IDEA)
- `lombok.NonNull` (do Lombok)
- `jakarta.annotation.Nonnull` (do Jakarta EE)
- `javax.validation.constraints.NotNull` (do Bean Validation)
Não entendo qual delas escolher para meu projeto. Por exemplo, escrevo código assim:
```java
public class UserService {
public User createUser(String name, String email) {
// Aqui às vezes é null, mas frequentemente esqueço de verificar
if (name == null) {
throw new IllegalArgumentException("Name must not be null");
}
// e email não