如何使用代码模型调用另一个 class 的方法
How to call a method of another class using codemodel
我有一个 java class 说 Class A,其中一些方法已经存在,我正在使用代码模型生成一个 class 说 classB
和在使用代码模型生成时,我试图调用 classA
.
的方法之一
我试过下面
method
.body()
.invoke(JExpr.ref(helper), "display")
.arg("hello");
但它不起作用,如果有人知道如何做同样的事情,我将不胜感激
我想生成如下方法:
public void method() {
Helper helper = new Helper();
helper.display("hello")
}
我也对如何生成以下方法感兴趣:
@Test
public void method() {
Assert.fail("message")
}
让我们开始:
public void method() {
Helper helper = new Helper();
helper.display("hello")
}
假设你已经有一个JMethod method
,你首先需要创建一个helper
实例:
JVar helper = method
.body()
.decl(
codeModel.ref(Helper.class),
"helper",
JExpr._new(codeModel.ref(Helper.class)));
然后只需在其上调用所需的方法即可:
method
.body()
.invoke(helper, "display")
.arg("hello");
没有这个:
@Test
public void method() {
Assert.fail("message")
}
更简单,静态调用即可。沿线的东西:
method
.body()
.staticInvoke(codeModel.ref(Assert.class))
.arg("message");
如果您对注释感兴趣:
method
.annotate(Test.class);
请注意,在上面的调用中,我可以将字符串直接传递给 arg
方法 (arg("message")
)。这只是字符串的一种便捷方法。如果你想使用其他类型,比如原始类型,你需要做一些像 JExpr.lit(12.34)
.
我有一个 java class 说 Class A,其中一些方法已经存在,我正在使用代码模型生成一个 class 说 classB
和在使用代码模型生成时,我试图调用 classA
.
我试过下面
method
.body()
.invoke(JExpr.ref(helper), "display")
.arg("hello");
但它不起作用,如果有人知道如何做同样的事情,我将不胜感激
我想生成如下方法:
public void method() {
Helper helper = new Helper();
helper.display("hello")
}
我也对如何生成以下方法感兴趣:
@Test
public void method() {
Assert.fail("message")
}
让我们开始:
public void method() {
Helper helper = new Helper();
helper.display("hello")
}
假设你已经有一个JMethod method
,你首先需要创建一个helper
实例:
JVar helper = method
.body()
.decl(
codeModel.ref(Helper.class),
"helper",
JExpr._new(codeModel.ref(Helper.class)));
然后只需在其上调用所需的方法即可:
method
.body()
.invoke(helper, "display")
.arg("hello");
没有这个:
@Test
public void method() {
Assert.fail("message")
}
更简单,静态调用即可。沿线的东西:
method
.body()
.staticInvoke(codeModel.ref(Assert.class))
.arg("message");
如果您对注释感兴趣:
method
.annotate(Test.class);
请注意,在上面的调用中,我可以将字符串直接传递给 arg
方法 (arg("message")
)。这只是字符串的一种便捷方法。如果你想使用其他类型,比如原始类型,你需要做一些像 JExpr.lit(12.34)
.