template plate marketing language informatica code boiler java macros boilerplate

java - marketing - boilerplate translate



Java: ¿hay soporte para macros? (7)

Bueno, supongo que podrías ejecutar tus archivos java a través del preprocesador C ...

Solo tengo curiosidad sobre cómo las personas resuelven esto. A menudo escribo el mismo tipo de código todo el tiempo. Por ejemplo:

new Thread() { //... //... //... //Change this line //... //... }.start();

Sigo cambiando la línea donde dice "Cambiar esta línea" y luego comenzar un hilo. Este cambio puede ser una línea o unas pocas líneas. ¿Cómo podría compactar este código?


En el caso de un Thread, puede pasar cualquier objeto que implemente Runnable a su constructor.

Entonces, la solución es crear tu propia clase:

public class MyClass implements Runnable { void run() { // change this line } }

Desafortunadamente, ejecutar no es estático, por lo que primero tendrás que crear una instancia de MyClass:

new Thread(new MyClass()).start();

También puede agregar variables a MyClass y un constructor para que pueda pasarle argumentos.

Editar: si necesita algo más que el método de inicio, también puede subclase Thread .


Es posible usar anotaciones Java para generar código repetitivo. Escribir su propio procesador de anotación no es difícil.


No, no hay macros. Para este caso, lo más cercano que puede obtener es crear una nueva instancia de Runnable y pasarla a una función de su propia creación o a un ExecutorService, que iniciará la tarea por usted.

Con Java, no hay una buena manera de deshacerse de este código "repetitivo", principalmente porque no se pueden pasar punteros a las funciones; todo tiene que ser un objeto.


Una técnica es colocar el código en una clase interna anónima y pasarlo a un método que haga el resto.

interface SomeInterface { void fn(); } executeTask(new SomeInterface { public void fn() { // Change this line. } }); private void executeTask(final SomeInterface thing) { Thread thread = new Thread(new Runnable() { public void run() { //... //... //... thing.fn(); //... //... }}); thread.start(); }

En general, no es una buena idea extender Thread u otras clases si no es necesario.


Si es algo que utilizas en muchos proyectos, lo configuraría en tu IDE. Por ejemplo, yo uso eclipse y si vas a Ventana-> Preferencias-> Java-> Editor-> Plantillas puedes configurar tus propias plantillas y luego completarlas automáticamente. Por ejemplo, siempre empiezo a escribir sysout y luego presiono tab, y eclipse tiene una plantilla incorporada para reemplazar eso con System.out.println ();

Hay muchas plantillas precompiladas en eclipse, por lo que podría buscar ejemplos de sintaxis, si ese es el IDE que utiliza, si no puede haber algo similar en otros IDE.

Esto es muy útil, y puedes crear uno para cualquier código de caldera que te encuentres escribiendo mucho.


Puede usar el patrón de plantilla para crear una clase base que contenga el código común. Por ejemplo:

public abstract class ThreadTemplate extends Thread { public void run() { //reusable stuff doInThread(); //more resusable stuff } abstract void doInThread(); }

Luego, comenzar un hilo con el código repetitivo es tan fácil como:

new ThreadTemplate{ void doInThread() { // do something } }.start();

Además, una solución menos elegante para ahorrarte algo de tipeo es utilizar la función de creación de plantillas de tu ide. Puede encontrar información sobre cómo configurarlos en Eclipse aquí y puede encontrar una lista de los útiles en las plantillas de código útil de Eclipse Java