2014-02-08 5 views
0

Java에서 호출자의 인스턴스를 복구하려고합니다. 여기가 자바에서 그렇게 할 수있는 방법을 존재 하는가 내 코드Java에서 메소드 호출자 찾기 (반영)

class A { 
    void methodA() { 
     B b = new B(); 
     A a = b.methodB(); //needs to be the same instance ie "this" 
    } 
} 

class B { 
    A methodB() { 
     //Here the code (with reflection) I need 
     A a = getPreviousInstanceCaller(); 
     return A 
    } 
} 

입니까? 어쩌면 반성과 함께?

+0

정적 메서드에서 메서드를 호출하면 어떻게 될까요? 'StackTraceElement' 클래스를 살펴보십시오. 호출 된 클래스를 찾을 수 있지만 인스턴스가 반드시 필요한 것은 아닙니다. –

+0

stacktrace를 검사하여 첫 번째 '홉'에서 요소를 가져올 수 있습니다. 내가 아는 한 메서드 호출은 유지되는 무언가가 아니기 때문에 다른 해결책은 없다 (stacktrace 제외). –

답변

2

반성 할 필요가 없습니다. 이러한 방법 중 하나가 필요합니다.

http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html#getStackTrace%28%29

스택 트레이스 요소 (0, 1, 2 등)
의 순서가 서로 다른 JDK 버전 달라질 수 http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#getStackTrace%28%29

참고. 일부 버전에서의 의미
요소 0이 맨 위 요소 일 수 있고 다른 요소에서는
맨 아래 요소 일 수 있습니다. 이것은 염두에 두어야 할 중요한 것입니다.

자세한 내용은 여기를 참조하십시오.

Getting the name of the current executing method