公共 ボイドのtestMethod(){ にTest1 T1 = 新しいTest1を()。 t1.my(); } パブリック 静的 ボイドメイン(文字列[]引数){ テストT = 新しいテスト(); t.testMethod(); } クラスTest1を{ 公共 ボイド私の(){ 文字列タグ = この.getMyGrandpaStackTrace()。 System.err.println(String.Formatの( "调用我的人是:%のS" 、タグ))。 } パブリック文字列getMyGrandpaStackTrace(){ StackTraceElement []スタックトレース = にThread.currentThread()getStackTraceメソッド()。 StackTraceElement父 =スタックトレース[1 ]。 StackTraceElementログ =スタックトレース[2 ]。 文字列タグ = NULL ; 以下のために(int型 i = 1; iは<stackTrace.length; iは++ ){ のStackTraceElement E = スタックトレース[i]は、 もし(!e.getClassName()。等号(log.getClassName())){ タグ = e.getClassName()+ "" +e.getMethodName(); 破ります; } } もし(タグ== NULL ){ タグ = log.getClassName()+ "" + log.getMethodName()。 } System.err.println(String.Formatの( "父は%sの%sです。" 、father.getClassName()、father.getMethodName()))。 System.err.println(String.Formatの( "私のおじいちゃんは%sです" 、タグ)); リターンタグ。 } }