Strona główna > Java > Wyświetlanie nazwy wykonywanej metody

Wyświetlanie nazwy wykonywanej metody

Ostatni miałem potrzebę tworzenia wielu (testowych) podobnych metod. Technika kopiuj, wklej i zmiana dla potrzeb danego przypadku. Pierwsza wpis w każdej metodzie to wyświetlenie krótkiej informacji o tym co jest wywoływane. Dawało to informacje o tym co się dzieje w historii wywołań. Metody przybierały postać jak poniżej:

	public void doSomthing1() {
		System.out.println("doSomthing1");
		// ...
	}
	public void doSomthing2() {
		System.out.println("doSomthing2");
		// ...
	}

Tak więc zawsze występowała potrzeba poprawy nazwy w pierwszej linii. Było to trochę uciążliwe, więc wynikła potrzeba wprowadzenia udogodnienia, co poskutkowało takim kodem:

	public void doSomthing3() {
		System.out.println(MethodHelper.getExecutedMethodName());
		// ...
	}

Implementacja tej metody poniżej. Nie jest ona może najpiękniejsza, ale spełnia swoje zadania. Po fakcie w internecie znalazłem wpisy o tym, że nie tylko ja miałem potrzebę posiadania takiej metody.

	public static String getExecutedMethodName() {
		StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
		boolean next = false;
		for (StackTraceElement stackTraceElement : stackTrace) {
			String string = stackTraceElement.getMethodName();
			if (next) {
				return string+" line:"+stackTraceElement.getLineNumber();
			}
			if ("getExecutedMethodName".equals(string)) {
				next = true;
				continue;
			}
		}
		return "Metchod Name Not Found";
	}

Jeszcze na koniec dokonałem pewnego usprawnienia. Dodałem wpis o linii w której jest wykonywane wywołanie😉.
Tak wiec rozpoznanie co się dzieje w kodzie w postaci brutalnego stylu jak poniżej, także jest łatwiejsze

	public void doSomthing3() {
		System.out.println("doSomthing3: 1");
		// some code
		System.out.println("doSomthing3: 2");
		// some code
		System.out.println("doSomthing3: 3");
		// some code
	}

i może wyglądać tak:

	public void doSomthing3() {
		System.out.println(MethodHelper.getExecutedMethodName());
		// some code
		System.out.println(MethodHelper.getExecutedMethodName());
		// some code
		System.out.println(MethodHelper.getExecutedMethodName());
		// some code
	}
Kategorie:Java Tags: ,
  1. Brak komentarzy.
  1. No trackbacks yet.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: