getClass() 메서드는 Java에서 객체의 클래스 타입을 반환하는 메서드입니다.
public final Class<?> getClass()
Object 클래스에 정의된 final 메서드이므로 모든 Java 객체에서 사용할 수 있습니다.Class<?> 타입으로 반환합니다.null 객체에서 호출하면 NullPointerException이 발생합니다.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
Integer num = 10;
if (num.getClass() == Integer.class) {
System.out.println("num은 Integer 타입입니다.");
}
Class<?> clazz = Class.forName("java.util.ArrayList");
System.out.println("패키지 정보: " + clazz.getPackage());
System.out.println("슈퍼클래스: " + clazz.getSuperclass().getName());
제네릭(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를 사용해야 합니다.
getClass()는 객체의 실제 클래스를 얻는 방법입니다.