2012-06-04 21 views
10

Estoy usando TDD, y tengo un patrón de codificación muy típico, usando Eclipse para autocrear métodos y campos a medida que codigo la prueba de la unidad. Por ejemplo:Eclipse: ¿Cómo generar automáticamente getter al agregar un campo?

  1. nombre tipo de método que no existe, por ejemplo:

    myObj.setValue(someValue);

  2. Haga clic en la pequeña marca de error rojo en el IDE para crear el método "setValue".

  3. Tipo interior del método setValue:

    public void setValue(String value) { this.value = value; }

  4. clic en la marca de error rojo a crear automáticamente un campo privado (llamado "valor en este caso");

Así que en este punto, me gustaría Eclipse para crear automáticamente el método de obtención, sin tener que hacerlo usando la fuente -> generar captadores y definidores menú.

Vi esta pregunta: How do you force Eclipse to prompt you to create a getter and setter when it doesn't do it automatically que parece implicar que Eclipse hace esto, pero no pude encontrar dónde configurar eso.

¿Hay alguna forma de configurar Eclipse para agregar automáticamente setter/getters cuando se agrega una nueva variable privada?

ACTUALIZACIÓN: Para aclarar aún más, estoy buscando algo como vi en la documentación Spring Roo. Si echa un vistazo a la sección "Cómo funciona", describe cómo el marco agrega automáticamente métodos adicionales a su clase, cada vez que agrega una variable privada. (Mi preferencia no es ejecutar otro proceso así, sin embargo, y tampoco obtener todo lo que parece agregar). Esperaba que Eclipse tuviera algo similar.

+2

Por curiosidad, si se utiliza TDD, ¿por qué crear el comprador antes de que se necesita? Pero si coloca el cursor después (o antes) del método set, escriba get y luego control-space debería obtener una sugerencia para un getter (no exactamente lo que pidió). –

+0

@ RogerLindsjö: Esa es en realidad una buena pregunta. La respuesta principal es: agregué a * Preferencias/Guardar acciones * la acción de "Eliminar tipos privados no utilizados", así que cuando guardo (lo que sucede cuando ejecuto la prueba de unidad para ver que falla), Eclipse eliminará el campo I acaba de crear (porque todavía no se hace referencia), lo que me vuelve a escribir de nuevo. Parece que el mejor flujo es simplemente crear el getter en ese momento. Además, generalmente encuentro que si creo un setter, generalmente necesito getter más adelante, por lo que también parece una buena convención que lo cree en ese momento cuando creo el setter en cualquier caso. –

+0

Eso lo explica en ese momento. También tuve esa configuración, pero no me gustó, así que ahora tengo miembros privados sin usar como advertencias y mantengo las advertencias en cero antes de comprometerme (pero las acepto durante el trabajo). –

Respuesta

16

Cuando mueva el mouse sobre el nombre de la variable, puede seleccionar "Crear getter y setter para varname" en el menú emergente.

O puede crearse un atajo para hacerlo. Preferencias -> General -> Teclas. En el cuadro de búsqueda ingresa "getter" y luego lo encontrará.

+0

Al menos en Eclipse Helios, no puede seleccionar crear getter y setter si ya ha creado el setter cuando mueve el mouse sobre la variable. – Pablo

3

Hmm ... no sé si esto es lo que está buscando, pero si creo un campo en una clase, hay una advertencia de que el campo no se utiliza. Si hago clic en el aviso firmar la opción de generar aparece get y set para el campo:

enter image description here

1

no creo que la pregunta implica que, dado que todas las respuestas dieron una solución manual.

AFAIK no es posible hacerlo automáticamente sin un complemento, y no sé de un complemento que lo haga.

Utilizo una plantilla para crear artefactos como esos a la vez, pero no sigo el mismo camino - No estoy seguro de que una solución de plantilla funcionaría si ya existiera un eliminador o colocador, ya que estoy no estoy seguro de que pueda verificar la presencia de un método y tomar decisiones de plantilla basadas en eso. Tal vez tu puedas.

10

probar esto, Funciona como la mantequilla

Goto Source --> Generate Getter and Setter Methods 

Either select one instance varible, or all ---> Ok 
3

hago algo diferente.

  • Primero crea la variable: (por ejemplo, private int threadsInPool = 3).
  • Coloque el cursor sobre el nombre de la variable (por ejemplo threadsInPool)
  • Aplicar este atajo: Alt + Shift + s, r ( Presione el último r después de un ligero retraso)
  • Simplemente presione Entrar cuando Generar Getters y Setters aparece el cuadro de diálogo y Voila!

EDIT: También puede intentar usar Lombok anotaciones:

@Getter @Setter private String value; 
Cuestiones relacionadas