Lembrando que se atribuirmos ao objeto Cliente o valor null e chamarmos o método, o NullPointerException irá acontecer. Abaixo tem um exemplo que mostra melhor o que eu quero dizer:
public class Main {
public static void main(String args[]) {
Cliente cli = null;
/*
* A conição abaixo gera NullPointerException pois o objeto
* cli é null.
*/
if (cli.getUser() == null) {
}
}
}
Outra coisa, em condições que queremos verificar se um objeto é nulo e depois fazer outra condição nesse mesmo If, devemos sempre verificar se o objeto é nulo primeiro. Senão também irá ocorrer NullPointerException. Olhem o exemplo abaixo:
public class Main {
public static void main(String args[]) {
Cliente cli = null;
/*
* Aqui também irá ocorrer um NullPointerException, pois a primeira
* condição é executada primeiro.
*/
if ((cli.getUser().equals("Alguma Coisa")) && (cli != null)) {
}
}
}
Abaixo, se invertermos as condições, irá funcionar normalmente.
publicclassMain{publicstaticvoidmain(Stringargs[]){Clientecli=null;/* * Aqui não irá ocorrer NullPointerException e o fluxo irá entrar * no "else" e imprimir a String. */if((cli!=null)&&(cli.getUser().equals("Alguma Coisa"))){System.out.println("O objeto cli não é nulo");}else{System.out.println("O objeto cli é nulo");}}}
Eu também usaria a sugestão Felagund para ver se uma String é vazia ou não.