2013-03-14 47 views
4

我想要一個類似反射的解決方案來顯示被調用的方法。列出正在調用的方法的名稱

例子:

public class Foo { 
    public void bar() { 
     new Y().x(); 
    } 
} 

public class Y { 
    public void x() { 
    } 
} 

public class Main { 
    public static void main(String[] args) { 
     // SETTING UP THE MAGIC 
     new Foo().bar(); 
     new Y().x(); 
    } 
} 

輸出應該是:

1. Foo.bar 
    1.2 Y.x 
2. Y.x 

最理想的有可能是一個事件,其將每一個方法被調用時發射(和一些信息可以作爲傳遞一個參數)。 PS:我不想在生產環境中使用它,我只需要它在骨架應用程序中顯示輸出,而不需要虛擬複製粘貼。

回答

1

如果您想在不污染代碼的情況下實現此目標,則必須構建探查器代理。

看看這個article,它告訴你如何去做。具體來說,請查看該文章中較低的分析方面。

清單2是一個分析方面,每次JVM進入或離開方法時都可用於輸出類名,方法名和時間戳。