创建一个方法,返回我想在Codemodel中生成的类

时间:2015-11-13 09:43:34

标签: sun-codemodel jcodemodel

我需要生成一个必须有一个返回同一个对象的方法的类。

我想生成类似这样的东西

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

经过一番挖掘后,我设法找到了解决方案。如果您无法访问类,因此无法提供其对应的Class对象,请使用Codemodel对象中的方法directClass(String className),该方法将表示类名的String作为输入,并返回相应的JClass对象。

答案 1 :(得分:0)

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

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