Pessoal encontrei mais um possível erro no livro da Katie Sierra pra certificação 310-055 página 75 2.edição
A subscrição e os Tipos de Retorno; e Retornos Covariantes
[i]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 de retorno declarado do método subscrito(da superclasse).
1 - public class Foo {
2 -
3 - void go(){ }
4 -
5 - }
1 - public class Bar extends Foo {
2 -
3 - String go(){ // subscrição válida em Java 1.5
4 - return null;
5 - }
6 -
7 - }[/i]
A duvida é:
Onde é que String é subtipo de void ???
PS: No teste que fiz no java 1.5 isso nem compila.