2012-03-05 2 views
4

Есть слишком много раз сталкиваемся с необходимостью писать сумматор методу/удалителя для списков:Написание Java сумматор для удаления, шаблон метода кода для Eclipse,

public void addSomething(Something something){ 
    somethings.add(something); 
} 

public void removeSomething(Something something){ 
    somethings.remove(something); 
} 

Если бы я получил это право, то Eclipse, шаблонов поддержка автозаполнение ... например, если у меня есть:

Vector<Something> somethings=new Vector<Something>(); 

Я хотел бы шаблон, чтобы добавить метод к автозаполнению Затмения, и будет автоматически завершить метод всего:

public void addSomething(Something something){ 
    somethings.add(something); 
} 

когда я типа "добавить" + (Ctrl + Space) ...

Любая идея, как сделать что-то вроде этого ... возможно указать мне на чтение материала конкретного на этот вид темы.

** UPDATE **

Ну, это то, что я до сих пор:

public final void add${type:elemType(collection)}(${type} ${varName:newName(type)}) { 
    ${collection}.add(${varName}); 
} 

Вот проблема, хотя, если я типа "добавить" + (Ctrl + Space):

На уровне класса, и коллекция объявлена ​​как поле, я получаю пустую переменную в виде коллекции.

public final void addtype(type type) { 
    collection.add(type); 
} 

На уровне метода, и коллекция объявлена ​​как поле, я получаю пустую переменную как коллекцию.

public final void addtype(type type) { 
    collection.add(type); 
} 

На уровне методы и ссылка коллекции является локальным переменным методом я получаю правильный синтаксис, но способ добавить внутри другой метод.

public void method(...) { 
    public final void addSomething(Something something) { 
     this.somethings.add(something); 
    } 
} 

Это означает, что я не получаю ссылку на уровень поля, как я могу ее получить?

** UPDATE 2 **

Это также дает тот же результат:

public final void add${type:elemType(collection)}(${type} ${varName:newName(type)}) { 
    ${collection:field(java.util.Collection)}.add(${varName}); 
} 

public final void remove${type:elemType(collection)}(${type} ${varName:newName(type)}) { 
    ${collection:field(java.util.Collection)}.remove(${varName}); 
} 

Спасибо,

Адам.

ответ

2

Я наконец использовал следующее:

public final void add${type:elemType(collection)}(${type} ${varName:newName(type)}) { 
    ${collection:field(java.util.Collection)}.add(${varName}); 
} 

public final void remove${type:elemType(collection)}(${type} ${varName:newName(type)}) { 
    ${collection:field(java.util.Collection)}.remove(${varName}); 
} 

Я создаю это с в методе, и разрезать его на уровне класса ... :)

2

Вы можете прочитать о доступных переменных шаблона в Eclipse help. Вы должны быть моде шаблоном на основе существующих шаблонов в Eclipse, см. «Просмотр шаблонов» в Eclipse.

+0

Это было не очень понятно, хотя конец был довольно информативным. – TacB0sS

2

Я предлагаю вам использовать Source > Generate delegate methods, поэтому вам не нужно писать шаблон для каждого метода, который вы хотите сгенерировать.

Назначить горячую клавишу для Generate delegate methods всякий раз, когда вы объявляете объект

List<Integer> integer = new ArrayList<Integer>();| <- your cursor 

Нажмите горячую клавишу, Eclipse обнаружит текущий выбранный объект, то придумать список доступных методов для вас.

+0

Хороший мой друг, но не то, что я хочу ... Я хочу что-то, что сделает 100% работы, а не 70%. :) Спасибо, см. Мое обновление. – TacB0sS

+0

Я также хочу другое имя «addSomething (Something s)», не только добавить (что-то s); – TacB0sS

Смежные вопросы