Omitindo os Getters e Setters com Lombok

Recentemente conheci o projeto Lombok. Este projeto tem como objetivo facilitar a implementação de classes Java, de forma que você fica desobrigado a criar os métodos get/set, toString, equals e hashcode. Para isso, o Lombok fornece algumas anotações que devem ser adicionadas nas classes e a partir destas anotações, os métodos já citados serão automaticamente criados nos arquivos compilados. Neste tutorial será demonstrado como utilizar o Lombok.

1. Vincular ao IDE

Para utilizar o Lombok, é necessário vincular o projeto Lombok a IDE que você está utilizando. Isto é necessário porque durante o desenvolvimento, como as classes não contém os métodos setters, getters, toString, e outros, as classes externas devem ter acesso a estes métodos, assim, essa vinculação se faz necessária. Ou seja, se você tem a classe User com o atributo id, como teria acesso ao getId() se ele não está implementado na classe? Bem, é isso que essa vinculação faz, ela diz a IDE que tal método existe, sem mesmo ele estar presente em sua classe.

Para vincular o Lombok a IDE, você deve fazer o download do arquivo lombok.jarhttp://projectlombok.org/download.html. Este arquivo é também uma biblioteca que deve ser adicionada na pasta lib de seu projeto para que a aplicação tenha acesso as anotações que serão adicionadas as classes. Para realizar esta vinculação, basta executar o arquivo lombok.jar e uma janela será aberta. Nesta janela você deve selecionar o diretório que contém o executável de sua IDE. Na figura a seguir, um exemplo desta vinculação com a IDE Eclipse e exibido:

lombok-plugin

2. Criando a classe User

Vamos agora trabalhar com o Lombok. Não esqueça de adicioar o lombok.jar a pasta lib de seu projeto. Veja na Listagem 1 a classe User implementada sem o uso do Lombok.

Listagem 1. Classe User, sem o lombok.

package com.mballem.lombok;

public class User {

	private Integer id;	
	private String name;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
		
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		User other = (User) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + "]";
	}	
}

Agora que você conhece a classe User, veja como ela ficaria ao utilizarmos os recursos do Lombok via anotações, conforme Listagem 2.

Listagem 2. Classe User, com Lombok.

package com.mballem.lombok;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@ToString
@EqualsAndHashCode
public class User {

	@Getter @Setter
	private Integer id;
	
	@Getter @Setter
	private String name;
} 

Analisando a Listagem 2 você pode notar que foram adicionadas 4 anotações, duas delas na assinatura da classe e duas em cada atributo de User. A anotação @ToString vai gerar o método toString() na compilação da classe User, assim como, as outras anotações vão gerar os métodos correspondentes a elas. Desta forma, você não precisa adicionar os métodos que foram implementados na Listagem 1, o Lombok é quem vai fazer isso.

E com a vinculação do Lombok a IDE, você terá normalmente o acesso ao métodos não implementados, conforme mostra a Listagem 3.  

Listagem 3. Método main().

package com.mballem.lombok;

public class Test {

   public static void main(String[] args) {
		
      UserLombok user = new UserLombok();
      user.setId(100);
      user.setName("Joey Ramone");

      System.out.println(user.toString());

      System.out.println("User:" + user.getName());
   }
}  

Para mais informações sobre o Lombok acesse o site oficial e leia a documentação disponível.  Existem algumas outras anotações que podem ser utilizadas e algumas anotações aceitam propriedades para certas configurações, como exemplo, o método set() pode ser gerado como protected ao invés de public da seguinte forma: @Setter(AccessLevel.PROTECTED).

Saiba mais em:

·  Project Lombok – http://projectlombok.org/

Ballem

Marcio Ballem é bacharel em Sistemas de Informação pelo Centro Universitário Franciscano em Santa Maria/RS. Tem experiência com desenvolvimento Delphi e Java em projetos para gestão pública e acadêmica. Possui certificação em Java, OCJP 6.

Você pode gostar...