我有一个课程Parent
和一个课程Derived
,例如
class Parent {
SomeClass obj = new SomeClass();
}
现在在我想使用CodeModel生成的类下面
class Derived extends Parent {
String s = obj.invoke();
}
我在下面尝试过,但是没有用
tryBlock.body().decl(codeModel.ref(String.class), "s",
(codeModel.ref(Parent.class)).staticRef("obj").invoke("invoke"));
如何调用obj而不是像在Parent
类中那样创建新对象?
答案 0 :(得分:1)
您可以为Parent
类提供类型protected
的{{1}}属性,并直接在SomeClass
类中使用它:
Derived
答案 1 :(得分:1)
您可以直接使用JExpr.ref()
引用该字段并将其用于初始化该字段:
JDefinedClass derived = codeModel._class(JMod.PUBLIC, "Derived", ClassType.CLASS);
derived._extends(Parent.class);
derived.field(0, String.class, "s", JExpr.ref("obj").invoke("invoke"));
这将生成以下内容:
public class Derived
extends Parent
{
String s = obj.invoke();
}