Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 java.lang.Class가 중요한 이유는 무엇일까?

java.lang.Class는 자바에서 가장 중요한 클래스 중 하나로, 클래스를 찾아 로드하는 getClass(), forName() 같은 다양한 유틸리티 메서드를 제공합니다. 또한 Class.newInstance() 메서드는 리플렉션(reflection)의 핵심 기반으로, new 연산자를 사용하지 않고도 클래스의 인스턴스를 생성할 수 있게 해줍니다.

java.lang.Class의 중요성

  • Class의 인스턴스는 실행 중인 자바 애플리케이션에서 클래스, 인터페이스, 열거형(enum), 애노테이션(annotation)을 표현합니다.
  • 자바 파일이 컴파일될 때, 컴파일러는 생성된 .class 파일 안에 java.lang.Class 타입의 public, static, final 필드인 Class를 자동으로 삽입합니다.
  • 모든 클래스는 java.lang.Class의 인스턴스 형태로 자신의 코드와 메타데이터를 노출합니다.
  • Class에는 공개된(public) 생성자가 없습니다. 대신 Class 객체는 클래스가 로드될 때 JVM(자바 가상 머신)에 의해 자동으로 생성되며, 클래스 로더의 defineClass() 메서드 호출을 통해서도 만들어집니다.

리플렉션과의 관계

java.lang.Class 객체는 리플렉션 API의 출발점입니다. Class 객체를 통해 클래스의 필드, 메서드, 생성자 등 내부 구조를 런타임에 동적으로 조회하고 조작할 수 있습니다. 실제로 스프링(Spring)과 같은 프레임워크가 빈(bean)을 생성하거나 의존성을 주입할 때 이 메커니즘이 널리 활용됩니다.

예제 코드

public class TutorialsPoint {
    public static void main(String []args){
        // class 필드를 통해 getName() 메서드에 접근
        System.out.println("클래스의 이름은: "+ TutorialsPoint.class.getName());
    }
}

실행 결과

클래스의 이름은: TutorialsPoint