Uma Coisa Bizarra

:shock:

Galera , tive lendo uma apostila de java ai em um exemplo me deparei com esse código:

AClass obj = new AClass (“Este é a instância -obj-”);
String cod = obj + “”;
System.out.println (cod); // saida: Este é a instância -obj-

como assim , uma string recebe um tipo Object???

essa eu bolei , c alguem puder me ajudar eu agradeço.

A máquina virtual chama de forma transparente método toString no objeto “obj” ao concatená-lo com outra String (no caso, “”).

mas o método toString num retorna o |nome da classe + @ + algums numeros| ?
no caso do exemplo ele retorna a string q recebe no argumento do construtor - new AClass (“Este é a …”);

exatamente sempre que você concatena algo com uma String a VM chamao o toString desse objeto…
Nesse caso que você mencionou o metodo toString deve ter sido sobreescrevido para retornar a String utilizada no construtor! Se você não sobre escreve-lo o metodo vai ser herdado da classe Object!

Só para lembrar… se você não concatenar com uma String teremos um problema de compilação… Porque um tipo AClass não pode ser atribuido a um String.

String s = new AClass("teste"); // ERRO DE COMPILAÇÃO String s = new AClass("teste")+""; //Chama o metodo toString de AClass
[]'s

mais porque en vez de ele escrever o retorno do toString ele escreve a string q ele recebe no construtor ?

Então… vou dar um exemplo abaixo de como poderia ser a Classa AClass

public class AClass{ private String s; public AClass(String s){ this.s=s; } public String toString(){ return this.s; } }

Entendeu???

hum isso parece override de método ou estou enganado?

Exatamente…
No caso agente fez um override ou sobrescrição do metodo!!
Se você não o fizer realmente teremos algo como AClass@6546164 !!!

Abraços!

IEH!
Kra hoje eu to mlaz mrm, nem pensei nisso!!!
ieh muito simplizim kkkkkkkkkkk
no caso o toString e reescrito para retorna o argumento do contrutor!!
pow eh q eu num to achando a definição da classe , c eu acha eu posto para poder confirmar , mais pode ser isso realmente.

abraços .