Bom dia.
A instrução "aluno.setNota((double) nota);" teria o mesmo efeito que "aluno.setNota(Double.valueOf(nota));" ?
Aguardo retorno.
Obrigado.
Bom dia.
A instrução "aluno.setNota((double) nota);" teria o mesmo efeito que "aluno.setNota(Double.valueOf(nota));" ?
Aguardo retorno.
Obrigado.
Julius,
Fazer:
aluno.setNota((double) nota);
Fazer isso, se chama Cast e não funcionaria neste caso. Trazendo essa ideia pra vida real, seria equivalente a tentar calçar um tênis menor do que o seu pé. Você tem um pé que recebe um tênis, mas ele não tem o tamanho suficiente.
A nota do aluno espera receber um double e você está passando uma String. O compilador, se fosse uma pessoa reclamaria mais ou menos assim "Pô cara, está visível que isso não é um double. Não vou deixar você atribuir isso aqui não.".
Isso é diferente de quando usamos o método findViewById()
na Activity, porque o retorno do findViewById()
é para uma View e você usa o Cast para um
Button```. O compilador sabe que o Button é uma View e deixa você fazer isso. Seria algo como você usar um chinelo na faculdade, seus colegas podem até reclamar mas ele cabe no seu pé e ele é um calçado, assim como o tênis.
Fazer cast é dizer para o programa que você tem certeza que aquele valor cabe em uma variável, mas os tipos tem q ser equivalentes.
double b;
int a = 1;
b = (double) a;
O exemplo acima funcionaria, porque um int cabe em um double.
Espero ter ajudado. Abraço!
Blz João. Obrigado.
Marquei este post como solucionado antes de analisar melhor a resposta.
João, entendo que o atributo nota não foi passado como uma String.
Em Aluno(), "nota" foi criado como Double e não como String.
E após o findViewById foi tratado como atributo do tipo int.
Entendo que é possível fazer o cast.
Testando no código, tanto "aluno.setNota((double) nota)" como "aluno.setNota(Double.valueOf(nota))" funcionou.
Valeu.