JDT 및 AST를 사용하여 중첩 된 메서드 호출에서 유형 가져 오기

Stefan Kraxberger

다음과 같은 중첩 된 메서드 호출의 유형을 어떻게 추론 할 수 있습니까?

JavaSourceFile javaSourceFile = new JavaSourceFile();

javaSourceFile.getClasses().size()

다음과 같은 일반적인 메서드 호출에 대해 작동합니다.

javaSourceFile.getClasses()

하지만 getClasses ()의 반환 유형을 얻고 싶습니다. 이것이 제가하는 것입니다.

ASTVisitor.visit(MethodInvocation invocation) 

size () 호출 유형을 얻고 싶습니다. 나는 사용한다

    Expression expression = invocation.getExpression();
    if (expression != null) {

        ITypeBinding typeBinding = expression.resolveTypeBinding();
        if (typeBinding != null) {
            Call call = new Call(invocation.getName().getFullyQualifiedName(), typeBinding.getName());
            this.activeMethod.getCalls().add(call);
        }
    }

메서드 호출의 유형을 가져옵니다. 그러나 처음에 설명한 것처럼 메서드 호출이 있으면 null이됩니다. 나는 또한 사용

invocation.resolveMethodBinding();

나중에 표현식을 사용하여 바인딩을 확인할 수없는 경우.

법률가

이 예에서는 두 가지 메서드 호출이 있습니다. 그래서 당신이 돌아 오지 않는 한 당신의 방문자는 2 번 호출 될 것 false입니다.

이 식으로 처음 방문하고 javaSourceFile.getClasses().size()호출 resolveTypeBinding()하면 size()먼저 발생하기 때문에 실제로 메서드 유형을 얻습니다 .

그러나 방문자가 호출 된 경우 주어진 코드에서 메서드 를 사용했기 때문에 javaSourceFile.getClasses().size()실제로 유형을 확인합니다 . (참고 : 방문 방법이 반환되지 않으면 (메소드 호출이기 때문에) 다시 방문 하고 변수 유형을 얻습니다 )javaSourceFile.getClasses()getExpression()falsejavaSourceFile.getClasses()javaSourceFile

또한 null모든 것이 올바르게 설정되면 발생해서는 안된다고 생각하는 결과를 얻었다 고 말했습니다 (예 : 일부 클래스의 클래스 경로 / 소스 경로를 지정하지 않았을 수 있습니다). 전체 코드가 필요하기 때문에 왜 그런지 알 수 없습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Python3 및 jinja2를 사용하여 중첩 된 Json 응답에서 정보 가져 오기

분류에서Dev

중첩 된 JSON에서 데이터 가져 오기 및 Vue-Multiselect를 사용하여 표시

분류에서Dev

Ajax를 사용하여 중첩 된 JSON에서 값 가져 오기

분류에서Dev

AngularJS를 사용하여 중첩 된 JSON에서 값 가져 오기

분류에서Dev

Angular를 사용하여 중첩 된 JSON 배열에서 값 가져 오기

분류에서Dev

셀레늄 웹 드라이버를 사용하여 중첩 된 div 태그에서 텍스트 가져 오기

분류에서Dev

클래스 템플릿의 추가 비 유형 템플릿 매개 변수를 사용하여 가변 메서드의 중첩 된 호출

분류에서Dev

WordPress : 중첩 된 단축 코드 내에서 사용자 지정 게시물 유형의 ID 가져 오기

분류에서Dev

맵과 뽑기를 사용하여 중첩 된 목록에서 값 가져 오기

분류에서Dev

Python의 중첩 된 목록 이해를 사용하여 mongo 컬렉션에서 모든 문서 가져 오기

분류에서Dev

rxjs 및 distinctUntilChanged를 사용하여 API 호출에서 항목 가져 오기

분류에서Dev

중첩 된 for 루프를 사용하여 Wpf 프레임 워크의 DataGrid 셀에서 값 가져 오기

분류에서Dev

JSON lib를 사용하여 Python으로 중첩 된 JSON에서 요소 가져 오기

분류에서Dev

jquery를 사용하여 중첩 된 HTML 요소에서 div의 ID 가져 오기

분류에서Dev

중첩 된 키를 사용하여 퍼펫 매니페스트에서 hiera 값 가져 오기

분류에서Dev

Python 스크래피를 사용하여 HTML에서 중첩 된 요소 가져 오기

분류에서Dev

맵을 사용하여 중첩 된 목록에서 가져 오기

분류에서Dev

beautifulsoup을 사용하여 중첩 된 div에서 제목과 href 가져 오기

분류에서Dev

중첩 된 개체 쿼리 및 MongoDB에서 원하는 키 가져 오기

분류에서Dev

Firebase를 사용하여 배열에 중첩 된 데이터 가져 오기

분류에서Dev

C ++에서 중첩 된 JSON 배열 및 행렬 가져 오기

분류에서Dev

반응 및 후크를 사용하여 중첩 된 JSON에 액세스 할 수 없습니다. 유형 오류

분류에서Dev

람다 식을 사용하여 중첩 된 컬렉션에서 리프 노드를 가져 오는 방법

분류에서Dev

HEAD를 사용하여 git diff 출력에서 추가 및 삭제 된 파일 가져 오기

분류에서Dev

HEAD를 사용하여 git diff 출력에서 추가 및 삭제 된 파일 가져 오기

분류에서Dev

목록 내 중첩 된 사전에서 고유 값의 키 가져 오기

분류에서Dev

TypeBuilder를 사용하여 런타임 중에 생성 된 클래스 유형 가져 오기

분류에서Dev

PowerShell을 사용하여 BackupExec에서 작업 상태 및 유형 가져 오기

분류에서Dev

Eclipse JDT / AST를 사용하여 새 메소드 추가

Related 관련 기사

  1. 1

    Python3 및 jinja2를 사용하여 중첩 된 Json 응답에서 정보 가져 오기

  2. 2

    중첩 된 JSON에서 데이터 가져 오기 및 Vue-Multiselect를 사용하여 표시

  3. 3

    Ajax를 사용하여 중첩 된 JSON에서 값 가져 오기

  4. 4

    AngularJS를 사용하여 중첩 된 JSON에서 값 가져 오기

  5. 5

    Angular를 사용하여 중첩 된 JSON 배열에서 값 가져 오기

  6. 6

    셀레늄 웹 드라이버를 사용하여 중첩 된 div 태그에서 텍스트 가져 오기

  7. 7

    클래스 템플릿의 추가 비 유형 템플릿 매개 변수를 사용하여 가변 메서드의 중첩 된 호출

  8. 8

    WordPress : 중첩 된 단축 코드 내에서 사용자 지정 게시물 유형의 ID 가져 오기

  9. 9

    맵과 뽑기를 사용하여 중첩 된 목록에서 값 가져 오기

  10. 10

    Python의 중첩 된 목록 이해를 사용하여 mongo 컬렉션에서 모든 문서 가져 오기

  11. 11

    rxjs 및 distinctUntilChanged를 사용하여 API 호출에서 항목 가져 오기

  12. 12

    중첩 된 for 루프를 사용하여 Wpf 프레임 워크의 DataGrid 셀에서 값 가져 오기

  13. 13

    JSON lib를 사용하여 Python으로 중첩 된 JSON에서 요소 가져 오기

  14. 14

    jquery를 사용하여 중첩 된 HTML 요소에서 div의 ID 가져 오기

  15. 15

    중첩 된 키를 사용하여 퍼펫 매니페스트에서 hiera 값 가져 오기

  16. 16

    Python 스크래피를 사용하여 HTML에서 중첩 된 요소 가져 오기

  17. 17

    맵을 사용하여 중첩 된 목록에서 가져 오기

  18. 18

    beautifulsoup을 사용하여 중첩 된 div에서 제목과 href 가져 오기

  19. 19

    중첩 된 개체 쿼리 및 MongoDB에서 원하는 키 가져 오기

  20. 20

    Firebase를 사용하여 배열에 중첩 된 데이터 가져 오기

  21. 21

    C ++에서 중첩 된 JSON 배열 및 행렬 가져 오기

  22. 22

    반응 및 후크를 사용하여 중첩 된 JSON에 액세스 할 수 없습니다. 유형 오류

  23. 23

    람다 식을 사용하여 중첩 된 컬렉션에서 리프 노드를 가져 오는 방법

  24. 24

    HEAD를 사용하여 git diff 출력에서 추가 및 삭제 된 파일 가져 오기

  25. 25

    HEAD를 사용하여 git diff 출력에서 추가 및 삭제 된 파일 가져 오기

  26. 26

    목록 내 중첩 된 사전에서 고유 값의 키 가져 오기

  27. 27

    TypeBuilder를 사용하여 런타임 중에 생성 된 클래스 유형 가져 오기

  28. 28

    PowerShell을 사용하여 BackupExec에서 작업 상태 및 유형 가져 오기

  29. 29

    Eclipse JDT / AST를 사용하여 새 메소드 추가

뜨겁다태그

보관