创建一个 returns 我想在 Codemodel 中生成的 class 的方法

Create a method which returns the class that i want to generate in Codemodel

我需要生成一个 class,它必须有一个方法 returns 一个相同 class 的对象。

我想生成这样的东西

public class A{
   public A method1(){
       ...
   }
 }

问题是我必须传递方法返回的 class 的 Class 对象。如果我这样做,因为我的 class 还没有构建,我将得到一个 ClassNotFoundException。有办法实现吗?

谢谢。

经过一番挖掘,我设法找到了解决方案。如果您无权访问 class,因此您无法提供其对应的 Class 对象,请使用 Codemodel 对象中的方法 directClass(String className)作为输入,表示 class 名称的字符串和 returns 对应的 JClass 对象。

您可以使用 CodeModel JDefinedClass 在 class 生成期间引用包含的 class:

    JDefinedClass aClass = codeModel._class(JMod.PUBLIC, "A", ClassType.CLASS);
    JMethod method= aClass.method(JMod.PUBLIC, aClass, "method1");
    method.body()._return(JExpr._new(aClass));

输出:

public class A {
    public A method1() {
        return new A();
    }
}