Getters y Setters

Los Setters y Getters son métodos de acceso a los atributos de una clase. Se pueden resumir de la siguiente manera:

  • Getters: Del inglés Get, (obtener) sirve para recuperar el valor de un atributo, el cual puede tener ya un valor, o bien, ser nulo. No recibe ningún parámetro y devuelve el mismo tipo de dato que el propio atributo.
  • Setters: Del inglés Set (establecer) sirve para asignar un valor a un atributo de un objeto. El Setter nunca retorna nada (es decir, un void), y recibe como parámetro el valor que se le quiere dar al atributo.

Para que quede más claro, nada mejor que un ejemplo. Aquí se define el atributo code como un String privado (no accesible desde fuera de la propia clase), mientras que tanto el get como el set son públicos (accesibles desde cualquier clase).

private String code;

public String getCode() {
   return this.code;
}

public void setCode(String code) {
   this.code = code;
}

Hay muchas razones de peso para optar por usar getters y setters en vez de acceder directamente a la propiedad. Algunas de estas razones son las siguientes.

  • Encapsulación del comportamiento asociado al getting o setting de la propiedad. Esto permite añadir funcionalidad adicional de forma más sencilla. Por ejemplo, se puede añadir una validación previa al set o a la asignación.
  • Ocultar la representación interna de la propiedad, pero exponerla usando una representación alternativa.
  • Aislar su interfaz pública del cambio, permitiendo que la interfaz pública permanezca idéntica, mientras la implementación interna cambie o evolucione sin afectar a los consumidores existentes del get y del set.
  • Controlar la semántica de la propiedad y la administración de la memoria (eliminación) de la propiedad, lo que es particularmente importante en entornos de memoria no administrados (como C ++ o Objective-C).
  • Proporcionar un punto de interceptación de depuración para cuando una propiedad cambia de valor en tiempo de ejecución, ya que detectar para su depuración cuando y donde una propiedad cambia a un valor particular puede ser bastante difícil sin esto en algunos lenguajes de programación.
  • Mejorar de la interoperabilidad con bibliotecas que están diseñadas para operar contra getter / setters de propiedad – Mocking, Serialization y WPF pueden ser algunos ejemplos.
  • Permitir que los herederos cambien la semántica de cómo se comporta la propiedad y se expone anulando los métodos getter / setter.
  • Permitir que el getter / setter se transmitan como expresiones lambda en lugar de valores.
  • Getters and setters permiten distintos niveles de acceso. Por ejemplo, el get podría ser público mientras que el set podría ser protected.

Cómo generar getters y setters en Eclipse

Desde uno de los IDE más populares para Java como es Eclipse, se pueden crear automáticamente de una forma sencilla.

Para ello, primero hay que crear la clase, con los atributos que nos hagan falta como privados.

A continuación desde el menú contextual (el que sale pinchando con el botón derecho del ratón en el código), habrá que seleccionar Source > Generate Getters and Setters.

Menú Generate Getters and Setters en Eclipse
Menú Generate Getters and Setters en Eclipse

Al pinchar, aparecerá una nueva ventana con los atributos privados que todavía no tienen getters y setters. Bastará con seleccionar los atributos que deseemos y pulsar OK para que Eclipse los cree automáticamente.

Selección de campos para los cuales se crearán los getters y setters
Selección de campos para los cuales se crearán los getters y setters

Ahora sólo faltará modificar los métodos getter y setter en Java si deseamos algún comportamiento especial de los mismos, pero los que se generan son completamente operativos tal cual.

Deja un comentario

Pin It on Pinterest