2017-03-04 3 views
2

asm 5.2를 사용하여 메소드 매개 변수 이름을 가져와야합니다. 내 소스는 Java 1.8입니다. MethodVisitor#visitParameter의 javadoc을 보면 이것이 정확히 내가 필요한 것 같습니다 :visitVisitor의 visitParameter가 호출되지 않습니다.

이 매개 변수의 매개 변수를 방문합니다.

하지만이 메서드는 호출되지 않습니다. 디버깅 정보가 누락 된 것과 관련이 있다고 생각하여 -g:source,lines,vars 클래스를 컴파일했지만이 역시 도움이되지 않았습니다.

나는 visitLocalVariable을 사용했지만, 필자가 작성한 유틸리티의 목적에서는 메소드의 코드는 신경 쓰지 않는다. 따라서 ClassReader.SKIP_CODE을 ClassReader의 accept 메소드에 제공하려고했다.

나는 뭔가를 놓치고 있습니까? 코드를 방문하지 않고 매개 변수 이름을 가져 오는 방법이 있습니까?

답변

2

-parameters 옵션을 사용하여 클래스를 컴파일해야 javac에 매개 변수 이름을 포함시켜야합니다. 따라서 매개 변수 이름이 포함되지 않은 옵션을 사용하지 않으면 메서드가 호출되지 않습니다.

또는 매개 변수 이름으로 the visitLocalVariable method을 확인할 수 있습니다. 디버그 심볼이 포함 된 비 추상적 메소드의 경우 매개 변수 이름이 여기에 포함됩니다.

+0

'-parameters' 옵션으로 해냈습니다. 고마워요! – yasko