我需要生成一个类,该类必须有一个返回同一类对象的方法。
我想生成这样的东西
public class A{
public A method1(){
...
}
}
问题是我必须传递该方法返回的类的 Class 对象。如果我这样做,因为我的课程还没有建立,我会得到一个 ClassNotFoundException。有没有办法实现这一目标?
谢谢。
我需要生成一个类,该类必须有一个返回同一类对象的方法。
我想生成这样的东西
public class A{
public A method1(){
...
}
}
问题是我必须传递该方法返回的类的 Class 对象。如果我这样做,因为我的课程还没有建立,我会得到一个 ClassNotFoundException。有没有办法实现这一目标?
谢谢。
经过一番挖掘,我设法找到了解决方案。如果您无权访问某个类,因此无法提供其对应的 Class 对象,请使用 Codemodel 对象中的方法 directClass(String className),该方法将表示类名的 String 作为输入并返回相应的 JClass 对象。
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();
}
}