(Поскольку объявление oldBody
отсутствует, я предполагаю в следующем правильном объявлении.)
Следующая строка должна быть удалена:
methodToBeImplemented.setBody(body);
С помощью приведенной выше строки вы вручную меняете узел, который должен быть целью ASTRewrite
. Обычно это не рекомендуется.
Далее ваш звонок
astRewrite.set(oldBody, MethodDeclaration.BODY_PROPERTY, body, null);
не удается, поскольку целевой узел (1-й параметр) и свойство целевого узла (2-й параметр) должны совпадать в отношении класса узла. Но в вашем случае это Block (oldBody)
и MethodDeclaration (BODY_PROPERTY)
. Правильный вызов:
astRewrite.set(methodToBeImplemented, MethodDeclaration.BODY_PROPERTY, body, null);
Альтернативным решением для ASTRewrite.set()
будет следующий вызов:
astRewrite.replace(oldBody, body, null);