image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Edson Portela
Edson Portela02/09/2023 19:43
Compartilhe

Getters e Setters

  • #Java

Em Java, os métodos getters e setters são usados para acessar e modificar os atributos (variáveis de instância) de uma classe de maneira controlada. Eles são uma parte importante do conceito de encapsulamento, que ajuda a proteger os dados de uma classe e a controlar o acesso a esses dados.

1. Getters (Métodos de Acesso):

  - Os métodos getters são usados para obter o valor de um atributo de uma classe.

  - Eles geralmente seguem uma convenção de nomenclatura, começando com "get" seguido pelo nome do atributo com a primeira letra em maiúscula.

  - Eles não alteram o estado do objeto, apenas fornecem acesso ao valor do atributo.

  - Um exemplo simples de um método getter para um atributo chamado "nome" seria assim:

   public String getNome() {

    return nome;

  }

2. Setters (Métodos de Modificação):

  - Os métodos setters são usados para definir o valor de um atributo de uma classe.

  - Eles geralmente seguem uma convenção de nomenclatura, começando com "set" seguido pelo nome do atributo com a primeira letra em maiúscula.

  - Eles permitem que você defina um novo valor para um atributo, aplicando lógica ou validações, se necessário.

  - Um exemplo simples de um método setter para um atributo chamado "idade" seria assim:

  public void setIdade(int novaIdade) {

    // Podemos adicionar validações aqui, se necessário

    idade = novaIdade;

  }

Usar getters e setters é uma prática recomendada porque eles permitem que você mantenha o controle sobre como os atributos de uma classe são acessados e modificados. Isso é útil para garantir que os dados de sua classe sejam usados de maneira segura e consistente.

public class Pessoa {

  private String nome;

  private int idade;

  // Getter para o atributo 'nome'

  public String getNome() {

    return nome;

  }

  // Setter para o atributo 'nome'

  public void setNome(String novoNome) {

    nome = novoNome;

  }

  // Getter para o atributo 'idade'

  public int getIdade() {

    return idade;

  }

  // Setter para o atributo 'idade'

  public void setIdade(int novaIdade) {

    // Podemos adicionar validações aqui, se necessário

    idade = novaIdade;

  }

}

Compartilhe
Comentários (2)

WF

Wellington Félix - 05/09/2023 21:28

Excelente artigo Edson e obrigado por complementar com mais informações Elto.

ES

Elto Silva - 02/09/2023 23:07

Deve-se ter uma certa cautela no uso de Getter e Setter:

Se a classe em questão não for um Bean/POJO, só use Getter e Setter se realmente houver necessidade, pois caso contrário você poderá estar burlando o encapsulamento da classe;

Se o Getter em questão retorna um objeto e esse objeto é mutável, recomenda-se o uso de programação defensiva.

Exemplo:


public class A {
List<Integer> b = new ArrayList<>();

public List getB(){
return b;
}
}


O Getter da classe acima permite que quem usá-lo, tenha acesso direto a lista interna do objeto da classe "A", podendo adicionar e remover números na lista e com isso alterar o estado do objeto da classe "A".

Em casos como esses em que houver a necessidade de retornar um objeto, devesse criar uma cópia do objeto interno e retornar a cópia. No caso do código acima, ao usar a programação defensiva ele ficaria assim:

public class A {
List<Integer> b = new ArrayList<>();

public List getB(){
return b.stream().collect(Collectors.toList()); //Cria uma cópia da lista
}
}