Шаблон Eclipse для переноса итеративного выбора в для каждого цикла

Я хочу выбрать Iterable, нажмите Alt + Shift + Z, чтобы получить контекстное меню "Surround With", и отобразите шаблон foreachwrap, который будет переносить выбор в для каждого цикла с соответствующим форматом.

Например, я хочу выбрать

someObject.getSomeList()

и сгенерируйте это

for (SomeListType someListType : someObject.getSomeList()) {

}

Я пробовал что-то вроде этого, но он не работает:

for( ${t:elemType(ls)} ${:name(t)} : ${ls:line_selection} )
{
    ${cursor}
}

Ответы

Ответ 1

Используйте QuickFix (Ctrl+1 в Win/Lin или Cmd+1 на Mac).

Вы можете получить желаемое поведение с помощью следующего подхода:

  • Напишите оператор, возвращающий итерируемую коллекцию, например

    someObject.getSomeList()
    
  • Нажмите Ctrl+1 (Cmd+1 на Mac) и выберите Assign statement to a new local variable (существует даже прямая комбинация для этого действия (Cmd + 2 L на Mac), однако, если вы хотите использовать это, вероятно, зависит от того, сколько разных комбинаций вы хотите запомнить)

  • Напишите не более

    fore
    

    и еще раз нажмите Ctrl+1 (Cmd+1), затем выберите Iterate over an array or iterable (просто нажмите Enter сразу после появления меню быстрого удаления, как правило, достаточно на этом этапе), и вы получите что-то вроде этого:

    for (Content content : someList) {
    
    }
    

Теперь вы можете даже включить использование локальной переменной, чтобы избавиться от нее (используя QuickFix, конечно;). QuickFix действительно мощный, я почти никогда не использовал никаких шаблонов, так как эта функция была опубликована.