gpt4 book ai didi

java - 如何用javapoet动态生成代码?更改方法参数

转载 作者:行者123 更新时间:2023-12-02 01:37:31 24 4
gpt4 key购买 nike

我正在尝试生成依赖于其他变量的java代码。在这个特定时刻,我尝试根据协议(protocol)生成代码。所以我可以接收 CoapResponse 对象或 Response 对象形式(javax)。

我不知道是否可以重用相同的代码并以某种方式仅更改变量,而不是使用不同的参数重复所有代码两次。

我要更改的代码如下:


MethodSpec payloadInterpreter = MethodSpec.methodBuilder("payloadInterpreter")
.addModifiers(Modifier.PRIVATE)
.addModifiers(Modifier.STATIC)
.addParameter(Response.class, "getResponse")
....

参数可以是 CoapResponse.class 而不是 Response.class。

我对语句也有同样的问题,但我解决了创建使用服务在运行时收到的信息的文字。一个例子:

if (MD.getMediatype().equals("JSON")){
ReadOutDeclaration="JSONObject readout= null";
GetReadOut="readout = getResponse.readEntity(JSONObject.class)";

然后:

 MethodSpec payloadInterpreter = MethodSpec.methodBuilder("payloadInterpreter")
.addModifiers(Modifier.PRIVATE)
.addModifiers(Modifier.STATIC)
.addParameter(Response.class, "getResponse")
.addStatement("$L",ReadOutDeclaration)
.beginControlFlow("try")
.addStatement("$L", GetReadOut)
.addStatement("System.out.println(\"Provider Response payload: \" + $L)",ReadOutPrint)

我不知道是否可以使用参数做类似的事情,或者即使有其他方法可以动态更改生成。预先感谢您。

最佳答案

这可能有帮助:

MethodSpec.Builder payloadInterpreterMethod = MethodSpec.methodBuilder("payloadInterpreter")
.addModifiers(Modifier.PRIVATE)
.addModifiers(Modifier.STATIC);
if (condition) {
payloadInterpreterMethod.addParameter(Response.class, "getResponse");
} else {
payloadInterpreterMethod.addParameter(CoapResponse.class, "getResponse");
}

一旦您想将其添加到 TypeSpec 中,请使用:

payloadInterpreterMethod.build()

关于java - 如何用javapoet动态生成代码?更改方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57509800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com