Determines the name of the invoking method. The method looks for the method name within the current thread's stack trace. - Java java.lang

Java examples for java.lang:Thread

Description

Determines the name of the invoking method. The method looks for the method name within the current thread's stack trace.

Demo Code

/*/*w  ww.j av  a 2  s.c o m*/
 * (J)ava (M)iscellaneous (U)tilities (L)ibrary
 *
 * JMUL is a central repository for utilities which are used in my
 * other public and private repositories.
 *
 * Copyright (C) 2014  Kristian Kutin
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * e-mail: kristian.kutin@arcor.de
 */
//package com.java2s;

public class Main {
    public static void main(String[] argv) throws Exception {
        System.out.println(getMethodName());
    }

    /**
     * Determines the name of the invoking method.<br />
     * <br />
     * <i><u>Note:</u><br />
     * The method looks for the method name within the current thread's stack trace. The
     * current implementation looks for the name at a fixed position.</i>
     *
     * @return a method name
     */
    public static String getMethodName() {

        Thread currentThread = Thread.currentThread();
        StackTraceElement[] stackTrace = currentThread.getStackTrace();

        int elements = stackTrace.length;
        int expectedIndex = 3;

        if (expectedIndex < elements) {

            StackTraceElement element = stackTrace[expectedIndex];

            String[] substrings = element.toString().split("\\(");
            String name = substrings[0];

            return name;
        }

        return "unknown method";
    }
}

Related Tutorials