groovy ast 변환 코드를 사용하여 자바 클래스를 조작 할 수 있습니까?Groovy AST Transform을 사용하여 자바 수정하기
예인 경우 예를 들어주세요.
아니요, 이유를 지정하십시오.
groovy ast 변환 코드를 사용하여 자바 클래스를 조작 할 수 있습니까?Groovy AST Transform을 사용하여 자바 수정하기
예인 경우 예를 들어주세요.
아니요, 이유를 지정하십시오.
아마도. 첫 번째 문제는 AST를 제공하는 Java 컴파일러를 찾는 것입니다. Eclipse 컴파일러를 사용해보십시오. 여기서 모든 유형을 Groovy AST 변환기가 예상하는 유형으로 맵핑하면됩니다. 오리 타이핑은 두 개의 AST에 호환 정보가 포함되어있을 때만 도움이 될 것입니다 (나는 의심 스럽습니다).
그 후, 당신은 바이트 코드가 생성 전에 컴파일러 에서 AST를 얻을 수있는 방법을 찾을 필요가 다음 수있는 방법이 바이트 코드를 얻기 위해 다시 컴파일러로 수정 된 AST를 주입.
모두 불가능하지만 불가능하지는 않지만 약간의 작업이 필요합니다.
예 Java 코드와 함께 Groovy AST 변환을 사용할 수 있습니다. Groovy는 Java 바이트 코드로 컴파일하고 Java 라이브러리에서 빌드합니다. 두 언어 간 상호 운용성이 뛰어납니다.
groovy 사이트의 전체 섹션은 AST Transformations입니다.
다음은 Java/Groovy 혼합 응용 프로그램의 예제입니다. 표준 Java 인터페이스 및 구현이 있습니다. Groovy 클래스는 @Delegate AST 변환을 사용하고 invokeMethod도 사용합니다.
자바 클래스 :
interface IFoo {
public String someMethod(String arg1);
}
class Foo implements IFoo {
public String someMethod(String arg1) {
arg1+arg1;
}
}
그루비 클래스 :. 새로운 바()를 실행
class Bar implements IFoo {
@Delegate Foo foo = new Foo()
def otherMethod() {
someMethod("abcdef")
}
}
otherMethod() 'abcdefabcdef'반환합니다.
http://groovy.codehaus.org/Category+and+Mixin+transformations는 내가 원하는 것입니다. 감사! – elhoim