<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();
}
}