Bom dia pessoal!
Gostaria que vcs me tirassem uma dúvida referente a palavra this,
É o seguinte tenho uma classe e dentro dessa classe tem um método que recebe um objeto como parâmetro
Aqui o código da aplicacão
public class MinhaClasse(){
private int atributo1;
private int atributo2;
public void metodo1(Classe1 c1){
Classe2.recebeObjeto(this);
}
}
Minha dúvida sobre o this é o seguinte se eu passar this para o método recebeObjeto ele irá passar para esse método uma instância referente a classe Classe1 ou uma instância referente a classe MinhaClasse?
E se o método1 recebe-se 2 ou mais objetos ao invés de 1, como ficaria o uso do this de nesse caso?
Faz tempo que não uso Java, mas baseado em JS e outras linguagens, ele só pode passar a classe MinhaClasse, pra passar a Classe1 ele teria que repassar a c1.
Então se eu quisesse passar para o método recebeObjeto uma instância da Classe1 teria que fazer
public void metodo1(Classe1 c1){
Classe1 cl1 =new Classe1();
Classe2.recebeObjeto(cl1);
}
Não, você já está recebendo um objeto do Classe1 por parâmetro, é só passar ele, não precisa instanciar de novo a Classe1.
public void metodo1(Classe1 c1){
Classe2.recebeObjeto(c1);
}
staroski e seu fizer:
public void metodo1(Classe1 c1){
Classe2.recebeObjeto(this);
}
No código acima será passado como argumento para o método recebeObjeto uma instância da classe MinhaClasse ou da classe Classe1?
staroski vc sabe aonde encontrar um conteúdo bem completo onde explique a utilização da palavra this em diversas situações?
A instância da classe MinhaClasse. A outra, da Classe1, será jogada no limbo, já que não está sendo usada. Experimente rodar este código para você vê ao que o this
realmente se refere:
public class Main {
public class MinhaClasse {
public void whoIsThatPokemon() {
System.out.println(this);
}
public void whoIsThatPokemon(MinhaClasse c) {
System.out.println(c);
}
}
public void main() {
MinhaClasse minhaClasse = new MinhaClasse();
// Usando this
minhaClasse.whoIsThatPokemon();
// Usando como parametro a propria instancia
minhaClasse.whoIsThatPokemon(minhaClasse);
// A instância
System.out.println(minhaClasse);
}
public static void main(String[] args) {
new Main().main();
}
}
A explicação bem completa é a seguinte:
Você usa o this
quando quer fazer referência à instância da própria classe em execução naquele momento.
No seu caso, está executando o método metodo1
da classe MinhaClasse
, logo o this
é a instância de MinhaClasse
.