С сгенерированным кодом вам обычно не нужно помещать класс в стек.Все, что вы можете сделать с помощью вызова метода, обычно доступно в байтовом коде.
Скажем, вам нужно вызвать метод с классом, вы можете поместить его в стек независимо от того, существует он или нет.
Я использую ASMifier.Это полезно, потому что вы можете начать с класса, который компилирует и делает то, что вы хотите в качестве шаблона, и заставляет его сбросить весь код, необходимый для воссоздания класса.Это означает, что вам не нужно писать большую часть кода самостоятельно.
public class Main {
public static void main(String... args) throws IOException {
ASMifierClassVisitor cv = new ASMifierClassVisitor(new PrintWriter(System.out));
ClassReader cr = new ClassReader("X");
cr.accept(cv, 0);
}
}
class X {
{
System.out.println("Inside class "+X.class);
}
}
printints
// lots of code
mv.visitLdcInsn(Type.getType("LX;"));
// more code.