[java] 리플렉션과 동적 로딩

자바 프로그래밍에서 리플렉션(Reflection)과 동적 로딩(Dynamic Loading)은 프로그램 실행 중에 클래스 및 메서드를 동적으로 로드하고 조사하는 데 사용됩니다.

1. 리플렉션(Reflection)

리플렉션은 실행 중인 객체의 클래스 정보를 알아내거나, 객체에 없는 메서드를 호출하는 데 사용됩니다. 이를 통해 속성, 메서드 및 생성자에 접근하여 조작할 수 있습니다. java.lang.reflect 패키지에 있는 클래스들을 사용하여 리플렉션을 구현할 수 있습니다.

리플렉션을 사용하여 클래스의 이름을 통해 클래스를 동적으로 로드하고 인스턴스를 생성할 수 있습니다.

import java.lang.reflect.*;

public class ReflectionExample {
   public static void main(String[] args) {
      try {
         // 클래스 이름으로 클래스 로드
         Class<?> myClass = Class.forName("com.example.MyClass");
         // 인스턴스 생성
         Object obj = myClass.newInstance();
         // 메서드 호출
         Method method = myClass.getMethod("myMethod");
         method.invoke(obj);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

2. 동적 로딩(Dynamic Loading)

동적 로딩은 프로그램 실행 중에 필요한 클래스를 로드하는 것을 말합니다. Class.forName() 메서드를 사용하여 동적으로 클래스를 로드할 수 있습니다.

public class DynamicLoadingExample {
   public static void main(String[] args) {
      try {
         // 클래스 이름으로 클래스 로드
         Class<?> myClass = Class.forName("com.example.MyClass");
         // 인스턴스 생성
         Object obj = myClass.newInstance();
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

결론

리플렉션과 동적 로딩은 자바 프로그래밍에서 런타임에 클래스와 메서드를 다루는 데 유용한 도구입니다. 그러나 너무 남용하면 성능에 영향을 미칠 수 있으므로 신중하게 활용해야 합니다.

자바 공식 문서 - 리플렉션 자바 공식 문서 - 동적 로딩

이 글은 자바에서 리플렉션과 동적 로딩에 대해 알아보았습니다. 감사합니다.