1) Create a file named Class.template with the following content:
public class %1$s {
public static void main(String[] args) {
System.out.println("Class %1$s says \"%2$s\"");
}
}
public static void main(String[] args) {
System.out.println("Class %1$s says \"%2$s\"");
}
}
2) Create a code generator which will read your template above and perform the variables substitution:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CodeGen {
public static void main(String[] args) {
String className = args[0];
String output = "Hello World!";
try {
BufferedReader in = new BufferedReader(new FileReader("Class.template"));
StringBuilder sb = new StringBuilder();
String line;
while ((line = in.readLine()) != null) {
sb.append(line);
}
in.close();
BufferedWriter out = new BufferedWriter(new FileWriter(className + ".java", false));
out.write(String.format(sb.toString(), generatedClassName, output));
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CodeGen {
public static void main(String[] args) {
String className = args[0];
String output = "Hello World!";
try {
BufferedReader in = new BufferedReader(new FileReader("Class.template"));
StringBuilder sb = new StringBuilder();
String line;
while ((line = in.readLine()) != null) {
sb.append(line);
}
in.close();
BufferedWriter out = new BufferedWriter(new FileWriter(className + ".java", false));
out.write(String.format(sb.toString(), generatedClassName, output));
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3) Test it:
Compile and run your code generator:
javac CodeGen.java
java CodeGen MyClass
java CodeGen MyClass
Compile and run your generated class MyClass:
javac MyClass.java
java MyClass
java MyClass
Happy templating!