DEV Community

Lucas Valhos
Lucas Valhos

Posted on

Reduza os erros NullPointerException no Salesforce com o operador de Navegação Segura!

O operador de navegação segura (Safe Navigation Operator), representado pelo símbolo ?., é uma funcionalidade na linguagem de programação Apex da Salesforce que permite aos desenvolvedores acessar membros de um objeto (como métodos ou propriedades) de maneira segura, sem o risco de encontrar erros de referência nula.

A importância do operador de navegação segura reside na sua capacidade de simplificar o código ao lidar com objetos que podem ser nulos, melhorando a manutenibilidade e a segurança do código.

Benefícios

  • Redução de Código: Minimiza a necessidade de verificações de nulidade explícitas, tornando o código mais limpo e legível.
  • Prevenção de Erros: Diminui a probabilidade de erros em tempo de execução causados por referências nulas.

Exemplo 1: Acesso a Propriedade de Objeto

Account acc = [SELECT Id, Name, (SELECT Id, LastName FROM Contacts LIMIT 1) FROM Account LIMIT 1];
String contactLastName = acc.Contacts?.get(0)?.LastName;
System.debug(contactLastName); // Imprime o sobrenome do primeiro contato se existir, caso contrário, não faz nada.
Enter fullscreen mode Exit fullscreen mode

Este exemplo demonstra como acessar o sobrenome do primeiro contato de uma conta de forma segura, sem causar um NullPointerException se Contacts for nulo ou vazio.

Exemplo 2: Chamadas de Método Seguras

public class CustomClass {
    public String importantMethod() {
        return 'Important Info';
    }
}

CustomClass obj = new CustomClass();
String result = obj?.importantMethod();
System.debug(result); // Imprime "Important Info" se obj não for nulo.

obj = null;
result = obj?.importantMethod();
System.debug(result); // Não faz nada pois obj é nulo.
Enter fullscreen mode Exit fullscreen mode

Este exemplo ilustra como chamar um método de um objeto que pode ser nulo sem a necessidade de verificar explicitamente se o objeto é nulo antes da chamada.

Exemplo 3: Encadeamento de Operadores de Navegação Segura

public class OuterClass {
    public InnerClass innerInstance;
    public class InnerClass {
        public String innerProperty = 'Value';
    }
}

OuterClass outer = new OuterClass();
String value = outer?.innerInstance?.innerProperty;
System.debug(value); // Não faz nada pois innerInstance é nulo.

outer.innerInstance = outer.new InnerClass();
value = outer?.innerInstance?.innerProperty;
System.debug(value); // Imprime "Value" pois innerInstance agora não é nulo.
Enter fullscreen mode Exit fullscreen mode

Este exemplo mostra como o operador de navegação segura pode ser usado em cadeia para acessar propriedades de objetos aninhados de forma segura, evitando NullPointerException se qualquer um dos objetos na cadeia for nulo.

Documentação oficial (em inglês)

https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_SafeNavigationOperator.htm

Top comments (0)