Threadオブジェクトからスタックトレースを取得できるのでそれを使用する。 System.out.println(java.util.Arrays.stream(Thread.currentThread().getStackTrace()) .skip(1).limit(4).map(t -> t.getClassName() + "." + t.getMethodName()).collect(java.util.stream.Collectors.joining(","))); skip(1)をかましているのは結果にgetStackTraceメソッド呼び出しも含まれているため。