getClass() : Class<?>

satic·2025년 3월 25일

getClass() 메서드는 Java에서 객체의 클래스 타입을 반환하는 메서드입니다.

1. 기본 개념

public final Class<?> getClass()
  • Object 클래스에 정의된 final 메서드이므로 모든 Java 객체에서 사용할 수 있습니다.
  • 객체의 런타임 클래스 정보를 Class<?> 타입으로 반환합니다.
  • null 객체에서 호출하면 NullPointerException이 발생합니다.

2. 사용 예시

public class Example {
    public static void main(String[] args) {
        String str = "Hello, World!";
        Class<?> clazz = str.getClass();

        System.out.println("클래스 이름: " + clazz.getName());
        System.out.println("간단한 클래스 이름: " + clazz.getSimpleName());
    }
}

출력 결과

클래스 이름: java.lang.String
간단한 클래스 이름: String

3. 응용 예제

(1) 객체의 클래스 비교

Integer num = 10;
if (num.getClass() == Integer.class) {
    System.out.println("num은 Integer 타입입니다.");
}

(2) 리플렉션(Reflection)과의 연계

Class<?> clazz = Class.forName("java.util.ArrayList");
System.out.println("패키지 정보: " + clazz.getPackage());
System.out.println("슈퍼클래스: " + clazz.getSuperclass().getName());

4. 주의사항

  • 제네릭(Generic) 타입 소거 문제
    getClass()제네릭 타입 정보를 유지하지 않습니다.

    List<String> list = new ArrayList<>();
    System.out.println(list.getClass().getName()); // java.util.ArrayList

    ArrayList<String>인지 ArrayList<Integer>인지 알 수 없습니다.

  • 기본 타입(Primitive Type)에는 사용 불가

    int num = 10;
    System.out.println(num.getClass()); // 컴파일 오류!

    int.class를 사용해야 합니다.


5. 결론

  • getClass()는 객체의 실제 클래스를 얻는 방법입니다.
  • 런타임 클래스 비교 및 리플렉션(Reflection) 활용에 유용합니다.
  • 그러나 제네릭 정보가 소거되는 점과 기본 타입에서는 사용할 수 없다는 점을 주의해야 합니다.

profile
95.06.09

0개의 댓글