<dependency> <groupId>io.activej</groupId> <artifactId>codegen</artifactId> <version>XXXX</version> </dependency> import io.activej.codegen.DefiningClassLoader; import io.activej.codegen.dsl.MethodDef; import io.activej.codegen.function.Function1; import io.activej.codegen.util.GeneratedClassLoader; public interface MyLibrary { @DefiningClassLoader(MyClassLoader.class) @GeneratedClassLoader(MyGeneratedClassLoader.class) void generateCode(); } import static io.activej.codegen.expression.Expressions.*; import static io.activej.codegen.util.Preconditions.checkNotNull; public final class MyLibraryImpl implements MyLibrary { @Override public void generateCode() { MethodDef methodDef = MethodDef.builder() .staticMethod(true) .withSignature(void.class, "doSomething", String.class) .withBody(callStatic(System.class, "out", get(null))) .build(); System.out.println(methodDef); } } import io.activej.codegen.DefiningClassLoader; public class MyClassLoader extends DefiningClassLoader { public MyClassLoader() { super(MyClassLoader.class.getClassLoader()); } } import io.activej.codegen.GeneratedClassLoader; public class MyGeneratedClassLoader extends GeneratedClassLoader { public MyGeneratedClassLoader() { super(MyGeneratedClassLoader.class.getClassLoader()); } } public class MainClass { public static void main(String[] args) { MyLibrary myLibrary = new MyLibraryImpl(); myLibrary.generateCode(); } }


上一篇:
下一篇:
切换中文