Livro SCJP - Portugues - Está correto isso?

15 respostas
P

No Java 5 voce tem a possibilidade de trocar o retorno de métodos sobrescritos, desde que o novo tipo seja um subtipo do tipo de retorno declarado no método subscrito (superclasse).

EX:

public class Foo(){

void go() {}

}
public class Bar extends Foo(){

String go(){

return null;

}

}

Este exemplo está correto? Isto quer dizer que Strinh é um subtipo de void?
Quer dizer q void é um tipo??

Bom espero q possam me ajudar

15 Respostas

A

Está incorreto. void não é uma classe, portanto não pode existir uma “Subclasse” de void. “void” indica que não há retorno. Portanto, seu exemplo está incorreto.
Um exemplo correto seria:

public class Foo(){ 
  Object go() {} 
} 

public class Bar extends Foo(){ 
  String go(){ 
    return null; 
  } 
}

blz? isso porque String extends Object.

Falou,

Armando

Eduardo_Bregaida

armando:
Está incorreto. void não é uma classe, portanto não pode existir uma “Subclasse” de void. “void” indica que não há retorno. Portanto, seu exemplo está incorreto.
Um exemplo correto seria:

public class Foo(){ 
  Object go() {} 
} 

public class Bar extends Foo(){ 
  String go(){ 
    return null; 
  } 
}

blz? isso porque String extends Object.

Falou,

Armando

Bom… tudo em Java extend de Object rs :smiley:

P

Na verdade isto é um exemplo retirado do SCJP do kathy sierra…!!! Em portugues… Procurei na errata do livro e nao vi esse erro…

ENFIM! TOU MT PUTO COM ESSE LIVRO! UMA MERD@ CHEIA DE ERRATA…
NAO RECOMENDO EM PORTUGUES!

LPJava

assim nao conseguir ver o erro ai… ele apenas nao criou um novo metodo com um tipo de retorno como void nao retorna a nada… ai eu tenho dois metodos com o mesmo nome porem com tipos diferentes… e vi tb que tudo que Foo faz Bar tb faz… tive essa visao…

P

Ele queria mostrar a subscrição de metodos… com retornos covariantes…!

Alexandre_Vilas_Boas

pedrorjbr:
Na verdade isto é um exemplo retirado do SCJP do kathy sierra…!!! Em portugues… Procurei na errata do livro e nao vi esse erro…

Oi Pedro, tenho este livro, poderia dizer em que pagina encontro este código?
Gostaria de ver em qual contexto ele esta inserido.

Isso vai gerar um erro de compilação porque a assinatura do método é a mesma

[]'s

P

XandSu:
pedrorjbr:
Na verdade isto é um exemplo retirado do SCJP do kathy sierra…!!! Em portugues… Procurei na errata do livro e nao vi esse erro…

Oi Pedro, tenho este livro, poderia dizer em que pagina encontro este código?
Gostaria de ver em qual contexto ele esta inserido.

Isso vai gerar um erro de compilação porque a assinatura do método é a mesma

[]'s

Bom nao estou com o livro aki… mas se nao me engano a pagina é 71 ou 73… nao sei ao certo

Alexandre_Vilas_Boas

pedrorjbr:

Bom nao estou com o livro aki… mas se nao me engano a pagina é 71 ou 73… nao sei ao certo

Então, também não estou com o livro, chegando em casa vou olhar.

Qual edição você tem?

Estou com a segunda edição. Não li o livro todo, estou no capítulo 2 e até o momento, a tradução excelente.

[]'s

P

XandSu:
pedrorjbr:

Bom nao estou com o livro aki… mas se nao me engano a pagina é 71 ou 73… nao sei ao certo

Então, também não estou com o livro, chegando em casa vou olhar.

Qual edição você tem?

Estou com a segunda edição. Não li o livro todo, estou no capítulo 2 e até o momento, a tradução excelente.

[]'s

A minha ed. é a primeira… A segunda me disseram q está boa

Paulo_Silveira

se o codigo esta assim, realmente esta errado.

ps: apesar de void nao ser classe, Void é :slight_smile:

Alexandre_Vilas_Boas

pedrorjbr:

A minha ed. é a primeira… A segunda me disseram q está boa

Você ja viu essa Thread, a editora esta trocando para quem não estiver satisfeito com a primeira edição.

No entanto, esse código continua errado na segunda edição. eles acabaram replicando o exemplo anterior que tratava da sobrecarga e tinha esse código mostrando que não é possível alterar apenas o tipo de retorno e manter a assinatura do método.

[]'s

A

Paulo Silveira:
se o codigo esta assim, realmente esta errado.

ps: apesar de void nao ser classe, Void é :)

E não muito satisfeito
o javadoc do Void o chama void de tipo primitivo, onde eu somente achava que era uma palavra chave pra metodos sem retorno.

/** * The Class object representing the primitive Java type void. */ public static final Class TYPE = Class.getPrimitiveClass("void");

diego2005

armando:
Está incorreto. void não é uma classe, portanto não pode existir uma “Subclasse” de void. “void” indica que não há retorno. Portanto, seu exemplo está incorreto.
Um exemplo correto seria:

public class Foo(){ 
  Object go() {} 
} 

public class Bar extends Foo(){ 
  String go(){ 
    return null; 
  } 
}

blz? isso porque String extends Object.

Falou,

Armando

Isso é uma falha na tradução, olhei na versão em inglês do livro e o exemplo é exatamente esse que o Armando postou…

T+

M

No livro em inglês o código é o seguinte

class Alpha {

Alpha doStuff(char c) {

return new Alpha();

}

}
class Beta extends Alpha {

Beta doStuff(char c) {     // legal override in Java 1.5

return new Beta();

}

}
MrDataFlex

diego2005:
armando:
Está incorreto. void não é uma classe, portanto não pode existir uma “Subclasse” de void. “void” indica que não há retorno. Portanto, seu exemplo está incorreto.
Um exemplo correto seria:

public class Foo(){ 
  Object go() { return null; } 
} 

public class Bar extends Foo(){ 
  String go(){ 
    return null; 
  } 
}

blz? isso porque String extends Object.

Falou,

Armando

Isso é uma falha na tradução, olhei na versão em inglês do livro e o exemplo é exatamente esse que o Armando postou…

T+

Olá. realmente está incorreto! O Correto é como eu quotei mesmo! O Erro se encontra na página: 75, sobre o tópico: A subscricao e os tipos de retorno; e retornos covariantes.

Até

Criado 15 de dezembro de 2006
Ultima resposta 25 de fev. de 2008
Respostas 15
Participantes 10