2011-02-11 4 views

Respuesta

6

Me temo que no puedo ofrecerle una solución que le permita modificar la plantilla de Eclipse para esto, sin embargo, ¿puedo sugerirle que reconsidere lo que está haciendo aquí?

Si marca el JavaBeans spec verá que cuando define sus métodos de esta manera ya no son definidores de propiedad válidos. Setters debería tener un tipo de devolución void; puede lamentar crear estos beans no estándar a largo plazo. Por ejemplo, intente usar java.beans.Introspector para recopilar información de bean para su clase y verá que no se encuentran los "setters" de su propiedad.

sé que es agradable ser capaz de inicializar rápidamente sus granos con llamadas encadenadas como:

new Person().setName("John Smith").setDateOfBirth(...).setAddress(...) 

¿Puedo sugerir como alternativa utiliza emisores de normas (que devuelven void) y en su lugar introducir métodos constructor como:

public Person withName(String name) { 
    this.setName(name); 
    return this; 
} 

Su construcción única línea rápido, entonces se parece a:

new Person().withName("John Smith").withDateOfBirth(...).withAddress(...) 

Creo que el prefijo 'con' se lee muy bien también.

+0

sí, creo que tienes razón. – secmask

+0

Solo desearía que hubiera una forma de obtener eclipse para generar el método 'con' cuando se genera un setter. Todavía no descubrió cómo. –

+0

El complemento de código rápido se encargará de esto por usted. La especificación de los granos de java está rota y ha sido durante mucho tiempo. Decida con cuidado si realmente le importan las especificaciones de frijoles, sé que en realidad nunca las he tenido. – lscoughlin

0

Por lo que yo puedo decir, todo lo que puede hacer es editar la "Ventanilla> Preferencias> Java> Código Style-> Code-> cuerpo Setter" plantilla en Java, así:

${field} = ${param}; 
return this; 

Si bien esto no configurará automáticamente el tipo de devolución para usted, Eclipse lanza una bandera roja para cada uno de sus incubadores, que luego puede pasar y seleccionar "Cambiar el tipo de devolución de método a 'yourTypeHere'".

Cuestiones relacionadas