Java

[인프런] Class 클래스

sejin2 2024. 6. 9. 13:23

자바에서 Class 클래스는 클래스의 정보를 다루는데 사용된다.  

Class 클래스는 java.lang 패키지에 속하며, 실행 중인 Java 애플리케이션 내의 모든 클래스와 인터페이스에 대한 메타데이터를 담고 있는 반사(reflection)의 중심적인 역할을 한다.
즉,
Class 객체는 특정 클래스의 속성과 메소드, 생성자 등에 대한 정보를 포함하고 있으며, 이를 통해 동적으로 객체를 생성하거나 메소드를 호출하는 등의 작업을 수행할 수 있다.

 

Class 클래스의 주요 기능

  • 타입 정보 얻기 : 클래스의 이름, 슈퍼 클래스, 인터페이스, 접근 제한자 등과 같은 정보를 조회할 수 있다.
  • 리플렉션 : 클래스에 정의된 메서드, 필드, 생성자 등을 조회하고 이들을 통해 객체 인스턴스를 생성하거나 메서드를 호출하는 등의 작업을 할 수 있다. 이런 작업을 리플렉션이라 한다. 추가로 어노테이션 정보를 읽어서 특별한 기능을 수행할 수도 있다. 
  • 동적 로딩과 생성 
  • 애노테이션 처리 
public class Example {
    public static void main(String[] args) {
        try {
            Class<?> clazz = Class.forName("java.lang.String"); // String 클래스에 대한 Class 객체 얻기

            // 클래스 정보 출력
            System.out.println("Class Name: " + clazz.getName());
            System.out.println("Superclass: " + clazz.getSuperclass().getName());

            // 동적 객체 생성
            String str = (String) clazz.getDeclaredConstructor(String.class).newInstance("Hello, Reflection!");
            System.out.println("New String Object: " + str);

            // 메소드 정보 출력
            Method[] methods = clazz.getMethods();
            for (Method method : methods) {
                System.out.println("Method Name: " + method.getName());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

Class클래스의 주요 메서드

  • getName(): 클래스의 이름을 반환한다. 패키지 이름을 포함한 전체 클래스 이름을 문자열로 반환한다.
  • forName(String className): 주어진 이름의 클래스를 로드하여 Class 객체로 반환한다. 클래스가 없거나 찾을 수 없는 경우 ClassNotFoundException을 던진다.
  • newInstance(): 클래스의 인스턴스를 생성한다. 기본 생성자가 없는 경우 예외를 던진다.
  • getSuperclass(): 해당 클래스의 슈퍼클래스를 반환한다. 슈퍼클래스가 없으면 null을 반환한다.
  • getInterfaces(): 클래스가 구현한 모든 인터페이스를 배열로 반환한다.
  • getDeclaredMethods(): 클래스에 선언된 모든 메서드를 반환한다. 접근 제어자에 관계없이 모든 메서드를 포함한다.
  • getDeclaredFields(): 클래스에 선언된 모든 필드를 반환한다. 접근 제어자에 관계없이 모든 필드를 포함한다.
  • getDeclaredConstructors(): 클래스에 선언된 모든 생성자를 반환한다.
  • getMethod(String name, Class<?>... parameterTypes): 특정 이름과 매개변수를 가진 공용 메서드를 반환한다.
  • isInstance(Object obj): 주어진 객체가 이 Class 객체가 나타내는 클래스로부터 파생된 인스턴스인지 확인한다.

'Java' 카테고리의 다른 글

[인프런] ENUM  (0) 2024.06.15
[인프런] 래퍼 클래스  (1) 2024.06.09
[인프런] String 클래스  (1) 2024.06.08
[인프런] 기본형과 참조형의 공유  (0) 2024.06.06
Labelled Loop ( 이름을 가지는 반복문 )  (0) 2024.06.03