Existe algum caso em que o uso da palavra chave "this" é obrigatória?
Existe algum caso em que o uso da palavra chave "this" é obrigatória?
Não chega a ser obrigatório, pois o compilador não obriga. Mas existe situação em que a falta do this pode gerar dados errados
Um exemplo seria quando você tem um dos parametros de um método com o mesmo nome de um atributo, caso você queira passar o conteúdo da variável do que veio do parametro para o atributo instanciado o compilador vai entender que é a variável do parâmetro para o do próprio parâmetro Como no exemplo a seguir vejamos num setter
public class Conta
{
private int numero ;
public void setNumero(int numero)
{
/*Sem o this.*/ numero=numero;
}
}
-----------outro código------------------------
public class ContaMaker()
{
public static void main(String [] args)
{
Conta conta = new Conta();
conta.setNumero(155);
System.out.println(conta.getNumero());
}
}
A saída será 0 (o qual é o valor inicial quando você dá new no exemplo acima ), caso o this.numero fosse colocado o compilador entenderia que você estava querendo colocar o conteudo da variável do método setNumero dentro da instância numero e a saída do programa seria 155
Logo conclui-se que, sim, existem casos que o uso do this é obrigatório para o programa retornar ou fazer aquilo que você deseja.
pelo que entendi o o uso do .this seria mais para encapsulamento, ou seja, voce definir na sua propria classe que voce estalando "disto" e nao de uma variavel local criada no metodo, e sim daquela que vc quer mesmo referenciada