Dúvida sobre subscrição

E aí pessoal tudo bem? Estou lendo o livro da Kathy SCJP 5.0 e fiquei na dúvida em um trecho que ela fala sobre subscrição dizendo que isso não é possível:

[code]public class Foo{
void go(){}
}

public class Bar extends Foo{

String go(){ //Inválido, não é possível modificar apenas o tipo de retorno.

  return null;

}

}
[/code]

Até aí tudo bem. Só que no parágrafo seguinte o livro diz o seguinte:

"(abre aspas)


A subscriçao e os Tipos de Retorno, e Retornos Covariantes

Quando uma subclasse quiser alterar a implementação de um método herdado (uma subscrição), terá que definir um método que coincida exatamente com a versão herdada. Ou, a partir do Java 5, você tem a possibilidade de modificar o tipo de retorno no método subscritor, desde que o novo tipo de retorno seja um subtipo do tipo de retorno declarado do método subscrito (da superclasse).

Vejamos um retorno covariante em ação:

public class Foo{

  void go(){ }

}

public class Bar extends Foo{

  String go() {  //subscrição válida em Java 1.5

     null;

  }

}
"(fecha aspas)

O trecho acima foi todo retirado do livro, porém quando fui testar esse exemplo, que segundo o livro funciona, deu erro de compilação (sendo que o java aqui é o 6, e usei o netbeans para testar). Ele deveria funcionar??
Fiquei na dúvida de como isso funciona

Kra,

Testei aqui com o eclipse tbem deu erro, Java 6

Estou no mesmo capítulo que você!!!

Abraço…

Nao vai executar mesmo… pra sobre escrever um metodo modificar o tipo de retorno nao basta.

Então, eu também achei que para sobrescrever um método você DEVE manter o mesmo tipo do retorno. Porém há essa mudança a partir do java 5. Bom, da a entender pela explicação que se eu colocar um método com retorno Object, eu posso passar qualquer coisa como retorno pelo polimorfismo. Mas esse exemplo que foi dado eu realmente não entendi.

Putz, olha só isso!! Eu baixei um pdf desse mesmo livro com a versão inglês. O erro está na tradução do livro. Na versão em português ta o código que passei acima no exemplo. Porém no original o exemplo que explica uma subscrição válida é a seguinte:

[code]class Alpha{
Alpha doStuff(char c){

return new Alpha();

}
}

class Beta extends Alpha{

Beta doStuff(char c){

  return new Beta();

}

}[/code]

Muita gente reclama de livros traduzidos que geralmente são ruins e tal. Eu comprei alguns do Deitel e achei a tradução muito boa… mas a AltaBooks ta de brincadeira. O Use a Cabeça Java e esse aí para Certificação estão cheio de erros!!! Muito amador o trabalho deles. Uma ou no máximo duas revisões dava para achar esse tipo de coisa…

eh cara… realmente livros traduzidos sao fogo…

O tradutor quis ser programador hehehe… tb qdo vi essa parte do capítulo fiquei sem entender.

Mas quando fui para o computador validar o código, vi que estava estranho.

Por essas e por outras que o cara que quer ser um bom programador, analista…etc…

tem que manjar INGLES…
Ha poucos livros livros traduzidos e os que tem estão meia-boca…dai é brabo…

Eu tenho o dobro do trabalho mental pra ler um livro em ingles…não por falta de conhecimento em ingles, simplesmente pq no fundo eu ainda “traduzo internamente”… mas é pq comecei a estudar java faz pouco, imagino que logo acostume.