2016-07-06 3 views
0

저는 Java Annotation Processor로 놀아 왔으며 좋은 결과를 얻었습니다. 이제 볼 수있는 한 불가능한 다음 작업을 수행하려고합니다.자바 주석 표현식을 분석하는 프로세서?

저는 빌더 패턴을 구현하는 여러 클래스가 있습니다. 방법의 "체인"는 execute() 방법을 사용하여 종료 호출하는 것이 중요 예를

new FooBuilder().doSomething("A").doSomethingElse("B").execute(); 

에 대한 말. 그렇지 않으면 빌더는 기본적으로 아무것도하지 않습니다.

그래서 컴파일 타임에 특정 표현 유형에 대해 execute() 메소드가 있는지 확인하기 위해 JAP를 사용하려고했습니다. 불행히도 내가 검색 할 수있는 최상의 정보는 표현식이 아닌 메소드 선언 레벨에있는 것으로 보입니다.

내가 원하는 것은 무엇일까요?

+0

사용자가 다음과 같이하면 어떻게됩니까? 'FooBuilder fb = new FooBuilder(). doSomething ("A"). doSomethingElse ("B");/* 다른 일을하십시오 */fb.execute();'? –

+0

이 경우 할당은'execute()'가 없다는 것을 정당화 할 수 있습니다. 그러나 당신은 바보가 아닙니다. 그럼에도 불구하고 그것은 많은 기본적인 경우를 포착 할 수 있습니다. – geert3

답변

2

Java의 표준 주석 프로세서는 메소드 선언과 필드 선언과 같은 선언에서만 콜백을 제공합니다.

주석 처리기를 사용하여 표현식을 분석 할 수는 있지만 더 많은 작업이 필요합니다. 각 메소드에서 메소드에 대한 AST (추상 구문 트리 또는 구문 분석 트리)를 얻은 다음 해당 메소드의 각 표현식을 방문하는 주석 프로세서를 작성해야합니다. AST는 컴파일러에 따라 다릅니다.

가장 잘 알려진 두 프로젝트는 Checker FrameworkProject Lombok입니다. 어쩌면 당신은 그들의 구현에서 영감을 얻거나, 주석 프로세서 중 하나의 위에 주석 프로세서를 작성할 수 있습니다.

관련 문제