1

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

我想生成这样的东西

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

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

谢谢。

4

2 回答 2

2

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

于 2015-11-14T18:00:56.147 回答
0

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

    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();
    }
}
于 2015-11-16T15:42:13.353 回答