Hugo Gonzalez - 29/07/2025 às 18:53
Análise:
O método exibir está sobrecarregado com dois parâmetros:
exibir(Integer valor) — recebe um objeto Integer (wrapper, pode ser null).
exibir(double valor) — recebe um tipo primitivo double (não pode ser null).
A chamada: exibir(null); passa null como argumento.
O compilador precisa decidir qual método chamar.
null pode ser atribuído a qualquer referência de objeto, mas não pode ser atribuído a tipos primitivos diretamente.
O método exibir(double) espera um primitivo, portanto o null não pode ser convertido diretamente para double.
O método exibir(Integer) aceita null pois Integer é uma classe (referência).
Portanto, o compilador chama exibir(Integer) e imprime “Valor inteiro: null”.
Sobre as alternativas:
a) Errado. Não há ambiguidade, pois null não pode ser convertido para double.
b) Errado. Integer é wrapper, double é primitivo, mas isso não impede a sobrecarga.
c) Correto. O código compila e executa, imprime “Valor inteiro: null”.
d) Errado. É permitido passar null para métodos com parâmetros objeto.
e) Errado. null não é convertido para double automaticamente.
✅ Resposta correta:
c) O código compila e executa normalmente, imprimindo “Valor inteiro: null”.