Я пытаюсь создать код Java, который зависит от других переменных. В этот конкретный момент я пытаюсь сгенерировать код в зависимости от протокола. Таким образом, я могу получить объект 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)
Я не знаю, могу ли я сделать что-то подобное с параметрами или даже есть ли другие способы динамического изменения поколения. Заранее спасибо.