[RESOLVIDO]Sobrescrita - Retorno variavel

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!

Nem todos aí compilam.

Por exemplo. um Double não pode ser unboxed e depois convertido implicitamente em um int.

Portanto, todos aí compilam, menos o Double.

Outra coisa que você disse aí que não fez muito sentido. Retornos co-variantes não se aplicam à essa situação que você propôs. Nenhum primitivo se enquadra no teste de “instanceof”. Então o que ocorre realmente é o unboxing e possível widening do retorno para se enquadrar ao tipo especificado na declaração do método.

Valeu brrodo. Então é basicamente isso? A sobrescrita não se aplica aos primitivos porque eles não são objetos certo? Ou não? #)

Sim, eles não possuem co-variantes pois como não são classes, não possuem a relação “é um…”.

…Mas sobrecrita se aplica sim. Só com retornos co-variantes é que não é posssível.

Vlws! Essa era minha dúvida!