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.
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.
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.
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.
Top comments (0)