Avatar ·

Como evitar verificações de null em Java: melhores práticas e alternativas

Olá a todos! Sou um desenvolvedor Java iniciante e estou sofrendo com um problema. No meu código, constantemente preciso escrever verificações de null, e isso parece horrível. Por exemplo, tenho um método que obtém um objeto User do banco de dados e, se ele não for null, quero obter seu nome. Mas se o objeto for null, tudo falha com NullPointerException. Aqui está como faço atualmente:
public String getUserName(User user) {
    if (user != null) {
        return user.getName();
    }
    return "Unknown";
}
E depois, quando preciso obter o nome de objetos aninhados, fica ainda pior:
public String getCityName(User user) {
    if (user != null) {
        Address address = user.getAddress();
        if (address != null) {
            City city = address.getCity();
            if (city != null) {
                return city.getName();
            }
        }
    }
    return "Unknown";
}
Isso é um pesadelo! O código se torna ilegível, por