2013-09-02 6 views
-3

프로그래밍 방식으로이 클래스의 모든 메서드가 호출되거나 호출되지 않습니다.클래스 내부에서 메서드를 호출하는 클래스 찾기

class blah { 
    void method1() {} 
    void method2() {} 
} 

class blahTest { 
    public static void main(String[] args) { 
     Class classToAnalyze = blah.class; 
     /* DO SOMETHING TO DETERMINE WHO IS CALLING blah CLASS AND IT'S METHODS 
      AND WHICH METHODS ARE NOT GETTING CALLED ANYWERE */ 
     String sMethod = /* GET THIS VALUE FROM PREVIOUS OPERATION */ 
     System.out.println("Method which is not getting called anywere: " + sMethod); 
    } 
} 

출력 : 내가 자바에서 프로그램이 작업을 수행하려면 어떻게

Method which is not getting called anywere:method2() 

?

+1

@sanbhat 괜찮습니다. – hexafraction

+0

AST를 쓰거나 사용하여 그러한 작업을 수행하십시오. –

+0

왜 Java에서이 작업을 수행해야합니까? 개인 IDE가 사용되지 않는다면 좋은 IDE가 알려줄 것입니다. 편집 (비공개, 공개는 아님) – hotforfeature

답변

1

method2을 호출 할 수있는 사람을 절대로 알 수 없으므로이를 합리적으로 수행 할 수 없습니다. 누군가가 항상 수업을 사용할 수 있습니다. method1도 내가 볼 수있는 모든 것에 대해 호출되지 않았습니다.

각 메소드에 정적 부울 플래그를 설정하여 실제로 호출 된 메소드를 알 수 있고 이러한 부울 플래그를 확인할 수는 있지만 반사/클래스 객체 조작 방법은 작동하지 않습니다.

어쨌든 개인적인 방법으로 IDE는 좋은 IDE라면 경고 또는 알림과 함께 사용되지 않는 메소드를 표시합니다. Eclipse가이 작업을 수행합니다.

+0

이것은 동적 결정을위한 에이전트 또는 구문/실행 분석의 일부 유형을 작성하는 일입니다. –

+0

@UwePlonus 전체 클래스 경로와이 클래스를 사용하는 모든 클래스를 검색 하시겠습니까? 블레치. – hexafraction

+0

그가 이것을 정적으로 또는 동적으로 수행하기를 원한다면 우리는 모른다. –

관련 문제