728x90
반응형
Java - 현재 실행중인 클래스명 / 메서드명 추출하기
프로그래밍을 하다보면 현재 실행 중인 클래스(Class)명이나, 메서드(method)명을 추출해서 활용해야 하는 경우가 있습니다.
디버그 로그를 출력하거나 에러를 확인할 때 등등 다양한 측면에서 활용이 가능합니다.
👉 우린 이것을 자바 표준 라이브러리만으로 클래스(class)명 또는 함수(method)명을 추출하는 방법을 알아보겠습니다.
클래스(Class) 이름 추출
✔️ 클래스가 실행될 때 추출하는 방법
public class Test {
public static void main(String[] args) {
String className = new Object(){}.getClass().getEnclosingClass().getName();
System.out.println("className : " + className);
// 결과
// className : Test
}
}
✔️ stack trace를 사용하여 추출하는 방법
public class Test {
public static void main(String[] args) {
String className = Thread.currentThread().getStackTrace()[1].getClassName();
System.out.println("className : " + className);
// 결과
// className : Test
}
}
위 두가지 방법은 클래스명을 추출하고 싶을 때 같은 코드의 반복이 싫거나 클래스 명을 자주 추출해서 활용해야 한다면 메서드로 만들어서 사용하는 것이 좋습니다.
👉 클래스 이름 취득 함수 만들기
public class CommonFunction {
/**
* 실행중인 클래스명 추출
* @return 클래스명
*/
public static String getClassName() {
return Thread.currentThread().getStackTrace()[2].getClassName();
}
}
public class Test {
public static void main(String[] args) {
String className = CommonFunction.getClassName(); // 메서드 호출
System.out.println("className : " + className);
// 결과
// className : Test
}
}
✔️ 함수를 구현해 놓은 곳은 CommonFunction 클래스이지만 함수를 호출하는 곳은 Test 클래스이기 때문에 Test 클래스이기 때문에 Test를 반환합니다.
메서드(Method) 이름 추출
실행중인 함수/메서드 이름을 추출하는 방법도 비슷합니다.
✔️ 메서드가 실행 될 때 추출하는 방법
public class TestClass {
public static void main(String[] args) {
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
System.out.println("methodName : " + methodName);
// 결과
// methodName : main
}
}
✔️ stack trace를 사용하여 추출하는 방법
public class TestClass {
public static void main(String[] args) {
String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
System.out.println("methodName : " + methodName);
// 결과
// methodName : main
}
}
함수로 만드는 방법도 위 클래스 메서드화 예제와 같은 방식으로 하시면 됩니다.
728x90
반응형
'Programming > Java' 카테고리의 다른 글
[Java] 자료구조 - 우선순위 큐(Priority Queue) & 힙(heap) 이란 무엇인가? (0) | 2021.05.28 |
---|---|
[Java] HashMap 키(key) / 값(value) 기준으로 정렬하는 방법 (0) | 2021.05.11 |
[Java] 문자열 분해(배열로 변환) toCharArray(), new String() 사용법 & 예제 (0) | 2021.05.07 |
[Java] 자료구조 - 큐(Queue)란 무엇인가? (큐 개념 / 연산) (0) | 2021.05.04 |
[Java] 제네릭(Generic) 사용법 / 개념 및 예제 정리 (0) | 2021.03.25 |