Java에서 클래스 이름 가져오기

Rupam Yadav 2023년10월12일
  1. Java에서 class.getSimpleName()을 사용하여 클래스 이름 가져오기
  2. getName()을 사용하여 익명 클래스의 클래스 이름 가져오기
  3. Thread.currentThread().getStackTrace()[1].getClassName()을 사용하여 클래스 이름 가져오기
Java에서 클래스 이름 가져오기

이 튜토리얼에서는 네 가지 방법을 사용하여 Java에서 클래스 이름을 가져오는 방법을 설명합니다. Java에서 클래스 이름을 얻으려는 경우가 많이 있습니다.

Java에서 class.getSimpleName()을 사용하여 클래스 이름 가져오기

이것은 클래스 이름을 얻는 데 가장 많이 사용되는 방법입니다. 다음 예제에는 main() 메서드가 있는 GetClassNameExampleClass라는 두 개의 클래스가 있습니다.

GetClassName 클래스에서 ExampleClass.class를 사용하여 클래스 정보를 가져옵니다. ExampleClass 유형의 Class 인스턴스를 반환합니다. 이제 클래스 이름만 문자열로 반환하는 classNameInstance를 사용하여 getSimpleName()을 호출할 수 있습니다.

public class GetClassName {
  public static void main(String[] args) {
    Class<ExampleClass> classNameInstance = ExampleClass.class;
    String className = classNameInstance.getSimpleName();
    System.out.println(className);
  }
}

class ExampleClass {
  private void exampleFun() {
    System.out.println("Just a function in a class");
  }
}

출력:

ExampleClass

getName()을 사용하여 익명 클래스의 클래스 이름 가져오기

이름이 없는 내부 클래스를 익명 클래스라고 합니다. 이 예제에서는 클래스 이름이 익명인 경우 클래스 이름을 가져오는 방법 또는 클래스에 익명 클래스가 있는지 확인하는 방법을 배웁니다. 아래에서 익명 클래스를 인스턴스화하기 위해 Example 인터페이스를 만듭니다. GetClassName에서 인터페이스를 사용하여 이름 없이 클래스를 인스턴스화하고 printMessage() 함수를 구현합니다.

클래스 이름을 얻기 위해 example.getClass()를 사용하지만 클래스 이름이 없기 때문에 Class<?> 유형의 인스턴스를 얻습니다. 그런 다음 classNameInstace를 사용하여 클래스 이름을 반환하는 getName()을 호출합니다. 출력에서 볼 수 있듯이 익명 클래스를 나타내는 $1이 추가된 상위 클래스 이름 GetClassName을 얻습니다.

interface Example {
  void printMessage();
}

public class GetClassName {
  public static void main(String[] args) {
    Example example = new Example() {
      @Override
      public void printMessage() {
        System.out.println("This is an anonymous inner class");
      }
    };

    Class<?> classNameInstance = example.getClass();

    String className = classNameInstance.getName();

    System.out.println(className);
  }
}

출력:

GetClassName$1

Thread.currentThread().getStackTrace()[1].getClassName()을 사용하여 클래스 이름 가져오기

마지막 예에서는 Thread 클래스를 사용하여 스택 덤프 및 스레드의 모든 호출에 대한 액세스를 제공하는 currentThread()를 사용하여 현재 실행 중인 스레드를 가져옵니다. getStackTrace()는 배열의 두 번째 항목을 가져오고 getClassName()을 호출하여 호출의 클래스 이름을 가져오는 스택 요소의 배열을 반환합니다.

public class GetClassName {
  public static void main(String[] args) {
    String simpleClassName = Thread.currentThread().getStackTrace()[1].getClassName();

    System.out.println("Class name: " + simpleClassName);
  }
}

출력:

Class name: GetClassName
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

관련 문장 - Java Class