1
AST 변환을 사용하는 클래스의 메서드를 대체하려고합니다.Groovy AST 변환 - 대체 메서드
먼저 메서드가 있는지 확인한 다음 제거합니다 (based on this).
MethodNode methodNode = parentClass.getMethod(methodName, Parameter.EMPTY_ARRAY)
if (methodNode != null) {
parentClass.getMethods().remove(methodNode)
}
컬렉션의 크기가 변경되었지만 클래스 노드에서 계속 액세스 할 수 있습니다.
방법을 제거한 후 나는 그 같은 이름의 새로운 추가하고 싶습니다 :
Repetitive method name/signature for method 'grails.plugin.Bar getBar()' in class 'grails.plugin.Foo'.
하는 올바른 방법은 무엇 :
그러나parentClass.addMethod(newMethodNode)
, 이것은 다음과 같은 오류가 발생합니다 이 작업을 수행?
는 업데이트 : 내가 할 의도 된 모든 이후 메소드의 기능을 기존의 내가 대신 새로운 block statement을 만들어 대체 methodNode.setCode(statement)
를 사용하여 기존의 방법에 설정했다.
전에 방법을 제거 할 수 있지만의 몸 전체를 교체하려고 시도 적이 있기 때문에 내가 도울 수 아니에요 그 외에는
새로운 기능을 갖춘 메소드. 제안 해 주셔서 감사합니다. – cweston