2010-08-19 17 views
13

Quiero seleccionar un Iterable, presionar Alt + Shift + Z para obtener el menú contextual "Surround With" y mostrar una plantilla foreachwrap que ajustará la selección en a para cada ciclo con el formato apropiado.Plantilla Eclipse para envolver una selección iterable en un bucle para cada uno

Por ejemplo, quiero seleccionar

someObject.getSomeList() 

y generar este

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

} 

He intentado algo como esto, pero no parece funcionar:

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

Voy a verificarlo. Alternativamente, puede escribir "foreach", presionar Ctrl-Space y seleccionar la propuesta "foreach - iterar sobre una matriz o Iterable", y generará código a partir de la plantilla "foreach", utilizando la última variable Iterable o de matriz. . – Ladlestein

+0

Sugiero que publique esto en http://stackoverflow.com/questions/1028858/useful-eclipse-java-code-templates para evitar la duplicación. En cuanto a la pregunta, soy un poco dudosa. La información de tipo genérico no se conserva en el bytecode, cuya falta obstaculizaría la solución. ¡Tengo mucha curiosidad por ver las respuestas! – questzen

+0

@questzen La información de tipo genérico (al menos para las clases y las firmas de métodos) se conserva en el bytecode, o el compilador de Java no podría usarla. La información genérica no se usa en tiempo de ejecución, sin embargo. –

Respuesta

5

Utilice QuickFix (Ctrl+1 en Win/Lin o Cmd+1 en la Mac).

que pueda obtener el comportamiento deseado con el siguiente enfoque:

  1. Escribir la sentencia que devuelve la colección iterable, por ejemplo,

    someObject.getSomeList() 
    
  2. Prensa Ctrl+1 (Cmd+1 en Mac) y seleccione Assign statement to a new local variable (hay incluso una combinación directa de esta acción (Cmd + 2 L en Mac), sin embargo, si usted quiere usarlo, probablemente depende de la cantidad de combinaciones diferentes quieres recordar)

  3. escritura no más de

    fore 
    

    y pulse Ctrl+1 (Cmd+1) de nuevo, a continuación, seleccione Iterate over an array or iterable (simplemente pulsando Enter después el menú quickfix aparece suele ser suficiente en este punto) y se obtiene así:

    for (Content content : someList) { 
    
    } 
    

Puede ahora incluso inline el uso de la variable local para deshacerse de de nuevo (usando QuickFix por supuesto;). QuickFix es realmente potente, casi nunca he usado ninguna plantilla desde que se publicó esa característica.

+0

Sí, eso es lo que hago ahora. Estaba esperando algo mejor. Adivina que no hay. –

Cuestiones relacionadas