Нашел тут очень интересную штуку, называется Lombok.
Особенно интересно - интеграция с Eclipse.
Если коротко, то это плагин к компилятору, который на этапе генерации кода вставляет геттеры/сеттеры для указанных полей, что позволяет не держать их в исходном коде. Не секрет, что в 90% случаев геттеры и сеттеры используются только для доступа к полям (fields) и не содержат бизнес-логики.
В качестве примера, для pure java надо писать так:
class Book{
private String title;
private String author;
private int pageNumber;
public String getTitle(){
return title;
}
public String getAuthor(){
return author;
}
public int getPageNumber(){
return pageNumber;
}
public void setTitle(String title){
this.title = title;
}
public void setAuthor(String author){
this.author = author;
}
public void setPageNumber(int pageNumber){
this.pageNumber = pageNumber;
}
}
а с lombok достаточно написать:
class Book{
@Getter @Setter private String title;
@Getter @Setter private String author;
@Getter @Setter private int pageNumber;
}
По компактности и выразительности кода - почти Groovy :)
Информация по использованию - после скачивания надо будет запустить полученный jar и интегрировать его в Eclipse (там графический инсталлятор, так что все интуитивно понятно). Интегрировать с Eclipse не обязательно, но добавит немного приятности.
Необходимо также чтобы при компиляции lombok.jar был в classpath проекта (для Eclipse его надо добавить к библиотекам проекта). В режиме исполнения (runtime) ломбок не нужен.
И немного дегтя: встроить ломбок в большой проект управляемый maven у меня не получилось, выдается куча ошибок типа InvalidClassModification. Разбираться было некогда да и ни к чему, наверное. Возможно, в следующих версиях добавят поддержку maven. А для проектов собираемых более просто - возможно самое то, что нужно.
Да и кстати, возможности не ограничиваются геттерами/сеттерами - есть еще несколько интересных возможностей. Более подробно рассмотренные в примерах на сайте.
четверг, 8 октября 2009 г.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий