Return this

6 respostas
Sombriks

Serve de nada, uma vez que já possuímos uma referência ao objeto a ser retornado. Todavia permite construções tipo aquela do GroupLayout; acaba sendo um recurso que meramente “acelera” algumas chamadas de método e torna a coisa toda um pouco obscura, pelo menos eu acho.

public Objeto fazAlgo(String a, Integer b){
      this.a=a;
      b+=b;
      return this;
}

queria mesmo era saber quem por aqui já andou usando, fiz umas experiências e a chamada(s) de método(s) ficou engraçado.

6 Respostas

nilolima

???

seduardo

Não entendi bem a sua pergunta.

Poderia informar qual a dúvida ? :?:

Foxlol

QUe que vai retorna disso ae ??? :shock:

fenrir

Vai retornar a instância da classe que contém o seu método fazAlgo.

nilolima

Amigão parece que vc ta falando grego. Não da para entender bem a sua dúvida, tente ser mais claro da próxima vez que a galera ajuda melhor.

Quanto ao seu código, olha só:

public Objeto fazAlgo(String a, Integer b){
       this.a=a;
       b+=b; // isso aqui não altera nada, b é uma var local ao método.
       return this;
 }

Não existe passgem por referencia em java, como b é uma var local ao metodo ela será destruida loga depois que o método acabar. Logo fazer b+=0 não altera nada no seu Objeto. Talvez fosse this.b+=b ai sim melhora.

Espero ter ajudado.

Sombriks

nilolima:
Amigão parece que vc ta falando grego. Não da para entender bem a sua dúvida, tente ser mais claro da próxima vez que a galera ajuda melhor.

Quanto ao seu código, olha só:

public Objeto fazAlgo(String a, Integer b){
       this.a=a;
       b+=b; // isso aqui não altera nada, b é uma var local ao método.
       return this;
 }

Não existe passgem por referencia em java, como b é uma var local ao metodo ela será destruida loga depois que o método acabar. Logo fazer b+=0 não altera nada no seu Objeto. Talvez fosse this.b+=b ai sim melhora.

Espero ter ajudado.

b não é variável local não. eu errei mesmo, :smiley:

perguntei se mais alguém andou usando uma estrutura desse porte aqui: (é, eu sei, eu sei, deveria ter colocado o código todo, e não um único método sem sentido.)

public class Objeto {
    
    private Integer b;
    private String a;

    public Objeto fazAlgo(String a, Integer b){
        this.a=a;
        this.b+=b;
        return this;
    }

    public Objeto fazAlgoMais(String a){
         this.a+=a;
         return this;
    }
}

que na hora de usar ficaria:

Objeto obj = new Objeto();
obj.fazAlgo("String qualquer",1)
    .fazAlgoMais(" em testes...");

Vi algo parecido em Ruby e achei bonito, :smiley:

A questão é se alguém mais andou usando isso; fiz algo semelhante um ouvinte externo de um JFrame e um Shell do SWT;

Criado 19 de setembro de 2006
Ultima resposta 20 de set. de 2006
Respostas 6
Participantes 5