2015-04-07 2 views
30

Есть ли способ для автоматического построения (Joshua Bloch's Builder Pattern) создания для классов в Eclipse? Например, опция в меню, плагин или ... Я не мог найти ничего в Refactor.Автоматически создавать построитель для класса в Eclipse

+1

Быстрый поиск Google для 'затмить плагин строитель pattern' получил меня (среди прочих) https://code.google.com/p/fluent-builders-generator-eclipse-plugin/ –

+0

Если вы можете как-то добиться этого, создав шаблон, обработка аннотаций - единственное, что я могу придумать. Он позволяет создавать аннотации, такие как '@ Build', а затем создавать процессор для поиска этой аннотации в исходном коде, вызывать ошибку, если нет класса строителя (необязательно) и разрешить клиенту генерировать код построителя подобно тому, как один автоматически объявлял нереализованные методы. Что касается плагинов, я уверен, что вы уже знаете правила /: Это отстой, но вы не можете запрашивать инструменты здесь –

+0

@Dirk - Мне не нравится ваш ответ. Невозможно сфокусировать комментарии, но я фактически даю вам -1. Может быть, вы не должны быть счастливы только с чистой ссылкой на ссылку, найденную Google. Я пробовал генератор Fluent Builder, и он не обновлялся в течение 10 лет и генерирует довольно сложный код вместо простого простого строителя. –

ответ

13

Возможно, я опаздываю на вечеринку.

Eclipse самостоятельно не предоставляет способ генерации кода для поддержки шаблона построителя. Однако он может быть расширен через плагины для повышения функциональности.

Существует этот плагин, который я использую это:

https://code.google.com/p/bpep/

Поскольку выше ссылка может стать недействительной в будущем, я сделал поиск, а также обнаружил, что он доступен по адресу: https://github.com/henningjensen/bpep

+0

К сожалению, Google Code закрывается, поэтому эта ссылка, скорее всего, станет недействительной через несколько месяцев. Этот проект доступен где-то еще? –

+1

@TagirValeev: Ответ обновлен. – Khanna111

+0

К сожалению, этот плагин, похоже, больше не работает. Он создает построитель, но, похоже, не может перечислить поля. –

1

Вы можете добавить свое собственное окно шаблона -> Настройки -> Java -> Редактор -> Шаблоны и это будет активироваться с предложением контента, но не реорганизовывать действия

+3

Я не думаю, что вы могли бы написать шаблон для строителя шаблон. Даже если это сработает, это плохая идея, потому что шаблоны не предоставляют способ обновления, вам придется вручную удалить код и повторно применить шаблон. –

20

Вы можете посмотреть на lombok аннотации к генерировать строителей без кода котельной плиты. Например:

@Builder 
public class MyPojo { 
    private String name; 
} 

MyPojoBuilder.builder().name("yourame").build(); 

Ограничение состоит в том, что это не работает с абстрактными классами.

+1

Определения +1 для того, чтобы направлять меня в отличный проект, который я никогда раньше не видел. Это решает проблему и упрощает некоторые другие проблемы с генерированием кода шаблона :). –

+2

Впечатляющие возможности. Интересно, почему ломбок не популярен? –

+0

Это действительно не ответ на вопрос OP, хотя ... – kryger

2

Попробуйте https://github.com/vojtek/write-it-once

package ${cls.package.name}; 

public class ${cls.shortName}Builder { 

public static ${cls.name}Builder builder() { 
    return new ${cls.name}Builder(); 
} 
<% for(field in cls.fields) {%> 
private ${field.type.name} ${field.name}; 
<% } %> 
<% for(field in cls.fields) {%> 
public ${cls.name}Builder ${field.name}(${field.type.name} ${field.name}) { 
    this.${field.name} = ${field.name}; 
    return this; 
} 
<% } %> 
public ${cls.name} build() { 
    final ${cls.name} data = new ${cls.name}(); 
<% for(field in cls.fields) {%> 
    data.${field.setter.name}(this.${field.name}); 
<% } %> 
    return data; 
} 
} 
Смежные вопросы