Bem, estava lendo aqui o Two minute drill do final do capitulo 2 e li a seguinte afirmação:
[quote]For methods with primitive return types, any value that can be implicitly
converted to the return type can be returned.[/quote]
Acho que a tradução é mais ou menos isso:
Para métodos com retorno primitivo, qualquer valor que pode ser implicitamente convertido ao tipo do retorno pode ser retornado.
Aí ok. Aparentemente ele quer dizer que se
public int print() {
//return new Byte((byte)3); qualquer um desses funciona, certo?
//return new Character((char)1);
//return new Double(32);
//return new Short((short)38);
return 2;
}
unboxing e widening e bla bla bla né… Aí eu fiquei com a seguinte dúvida… Métodos que retornam um primitivo podem ser sobrescritos retornando um primitivo que pode ser ampliado até chegar no primitivo do método original?
Exemplificando minha dúvida usando o exemplo anterior:
@Override
public byte print() { // aqui o byte pode ser ampliado até chegar a um int? ou retornos covariantes só se aplicam a objetos?
//return new Byte((byte)3);
//return new Character((char)1);
//return new Double(32);
//return new Short((short)38);
return 2;
}
Fiquei com essa dúvida a uns 2 dias atrás quando li uma questões que envolvia método com retorno primitivo e sobrescrita… Mas aí acabei esquecendo dela e só lembrei agora quando tava lendo o exercicio do final do capítulo!
Vlws!