2014-10-28 5 views
2

소스 코드를 읽는 Java 파서에는 MethodDeclaration을 사용하지만 몇 가지 문제가 있습니다. 이 클래스가 속한 클래스를 제공하는 메소드를 볼 수 없습니다. 메소드가 존재하는지 또는 자바 파서를 살펴보고 각 MethodDeclaration을 ClassOrInterfaceDeclaration에 연결하는 방법을 만들어야한다.Java MethodDeclaration ClassOrInterfaceDeclaration 클래스 이름 찾기

MethodDeclaration이 클래스에 속하는지 감지하는 방법이 필요하거나 ClassOrInterfaceDeclaration에서 모든 메서드를 가져 오는 방법이 필요합니다.

편집이보다 명확하게하기 :

MethodDeclaration m = oldMethodDeclaration ; //where oldMethodDeclaration is already defined method declaration 

나는 "m"이 속해있는 클래스를 찾을 수있는 방법이 필요합니다. 나는 내가 그것을 부착 방법 이름의 목록을 발견하는 것이 가능하다

ClassOrInterfaceDeclaration ClassName; 

이있는 경우 다음의 예에서 그것은 또한

public class ClassName{ 
public void oldMethodDeclaration(){ 
} 

} 

즉 "클래스 이름"

를 반환합니다?

+0

귀하의 질문이 명확하지 않습니다. 추가 정보가 추가 된 SSCCE http://sscce.org/ – Chiseled

+0

을 제공하십시오. – Steven

답변

1

JavaParser를 사용중인 것 같습니다.

은 그래서 MethodDeclaration의 바깥 쪽 클래스를 얻을 수 있습니다 :

TypeDeclaration t = (TypeDeclaration) m.getParentNode(); 

는 ClassOrInterfaceDeclaration의 방법을 방문하십시오 :

c.accept(new VoidVisitorAdapter<Void>() { 
    @Override 
    public void visit(MethodDeclaration n, Void arg) { 
     System.out.println("Method name: " + n.getName()); 
    } 
}, null); 

난 그냥 메소드 이름을 출력한다. MethodDeclarations를 사용하여 방문자를 작성하는 데 필요한 정보를 제공한다고 가정합니다.