Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Validação de 'long' com 'null'

Boa noite. No exemplo da aula "Editando alunos", o instrutor, para verificar se o aluno é um novo aluno ou aluno já cadastrado, verifica se o id do mesmo, é diferente de null. Porém ao digitar essa verificação no meu AS, ele não permite e da a seguinte mensagem: "Operator != cannot be applied to 'long', 'null'".

Fiz, verificando se o id é >0, pois teoricamente se o aluno estiver vindo do banco de dados, terá um id >0. Mas porque não consegui validar com null?

public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_formulario_salvar:
                Aluno aluno = formularioHelper.getAluno();
                AlunoDAO alunoDAO = new AlunoDAO(this);
                //Verifica se é atualização de dados ou um novo aluno
                if (aluno.getId()!= null){
                    alunoDAO.updateDataAluno(aluno);
                    Toast.makeText(this, "Dados do aluno "+aluno.getNome()+" alterados", Toast.LENGTH_SHORT).show();
                }else{
                    alunoDAO.insertAluno(aluno);
                    Toast.makeText(this, "Aluno "+aluno.getNome()+" salvo", Toast.LENGTH_SHORT).show();
                }
                finish();
                break;
            default:
                Toast.makeText(this, "Falha", Toast.LENGTH_SHORT).show();
                finish();
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}
3 respostas

Boa noite Rafael

Acredito que o id que você criou seja um tipo primitivo de long, com um tipo primitivo não é permitido verifica-lo se ele é diferente de nulo, pois não é possível atribuir valor null a ele. No exemplo do instrutor, ele criou o id com a classe Long, e como objetos podem ficar nulos, foi possível fazer a verificação com o operador !=.

Abraços.

E qual a diferença entre usar o tipo primitivo long e a classe Long? Quando sei que tenho que usar um ou o outro?

solução!

Depende da sua necessidade, há algumas peculiaridades entre eles, por exemplo: - Tipos primitivos possuem uma melhor performance e consomem menos memória, pois são preservados no stack (pilha), enquanto os Objetos são mantidos no heap. - Objetos, quando são passados por parâmetro, são passados por referência ao invés de serem por valor. - Tipos primitivos não precisam ser verificados se seus valores são nulos.