java - from - Generar setters que devuelven self en Eclipse.
generate class diagram eclipse (6)
Me gustaría tener mis setters para poder encadenarlos como:
myPojo.setX(x).setY(y);
Por lo general, genero setters con Eclipse, pero desafortunadamente la code template
para setters me permite cambiar solo el cuerpo del setter, no la firma.
¿Cuál sería la forma más fácil de completar lo anterior? ¿Además de buscar y reemplazar la edición manual? :)
Es posible que pueda utilizar el complemento generador de generadores de fluidos para generar configuradores de la forma que desee.
Mis dos centavos en esto, yo (señorita) uso el
Preferences > Java > Code Style > Code Templates > Comments > Setter
y poner allí la siguiente plantilla:
/**
* @param ${param} the ${bare_field_name} to set
*/
// public ${enclosing_type} ${bare_field_name}(${field_type} ${param}) {
// ${enclosing_method}(${param});
// return this;
// }
Beneficio:
Se puede usar cuando se generan setters getters usando
Source > Generate Getters and Setters...
Se puede usar cuando se genera un solo
set<start-of-fieldname>
mientras se escribe en el editorset<start-of-fieldname>
y seCtrl
+Space
.
Inconvenientes:
- Tienes que marcar los comentarios generados al generar setters getters.
- Debe eliminar los comentarios de línea,
Ctrl
+F
//
y reemplazarlos por una cadena vacía.
Desafortunadamente, no pude encontrar una forma de escribir en mayúscula la primera letra del nombre del campo que habría hecho usando un prefijo como es posible.
Podrías usar el Editor / Plantillas para este propósito. Para definir una nueva plantilla, abra la ventana de Preferencias, luego Java-> Editor-> Plantillas. En esta ventana puede definir una nueva plantilla y darle un nombre. Por ejemplo:
public ${enclosing_type} setName(${argType} name) {
this.name = name;
return this;
}
Dale un nombre, por ejemplo, settr. Luego puede usar esta plantilla en su código Java escribiendo ''settr'' y luego Ctrl-Space.
Puedo ofrecer un tipo de parche que, sin embargo, no requiere ninguna instalación adicional.
Vaya a Ventana / preferencias / Java / Estilo de código / Plantillas de código. Edite la plantilla de "cuerpo de establecimiento" como sigue:
${field} = ${param};
return this;
Ahora, cuando ejecute "generar captadores y definidores", creará un definidor como:
public void setMyField(String myField) {
this.myField = myField;
return this;
}
Esto obviamente causa un error de compilación porque el tipo de método es void
. Pero puede Ctrl-F
y reemplazar todos los ''conjuntos públicos de vacíos'' por public YourClassName set
.
Es un parche, pero funciona ...
Solución Notepad ++:
Datos:
JavaType variableName;
Buscar expresiones regulares:
(.*) (.*);
Reemplazar regex
public JavaType with/2/(/1 p/2/) { this./2 = p/2; return this; }
Debe corregir manualmente el nombre del método, ya que no escribe en mayúsculas la primera letra del nombre de la variable.
Yo uso el patrón de nombres withField
con esta plantilla
public ${enclosing_type} with${Field}(${argType} ${param}) {
set${Field}(${param});
return this;
}
Creo que fue inspirado por la answer en ese momento. Las únicas diferencias son los agregados {$ Field} y $ {param} que se usan para nombrar el método y los argumentos y llamar al establecedor real generado por eclipse en el cuerpo del método.
Lo bueno de las plantillas es que puede crear sus métodos con el autocompletado más algunas pestañas mientras archiva las variables de la plantilla.
El resultado es algo como esto:
public Foo withBar(String bar)
{
setBar(bar);
return this;
}
Aquí hay una captura de pantalla para configurar esto en eclipse: