[java] 리플렉션을 사용한 인터페이스 메소드 호출

이번에는 리플렉션(Reflection)을 사용하여 Java에서 인터페이스의 메소드를 호출하는 방법에 대해 알아보겠습니다.

1. 리플렉션이란?

리플렉션은 실행 중인 Java 프로그램의 클래스, 메소드, 필드 등의 정보를 가져오거나 조작할 수 있는 API를 말합니다. 이를 통해 프로그램이 실행될 때 클래스의 정보를 동적으로 가져와서 사용할 수 있습니다.

2. 인터페이스 메소드 호출하기

2.1. 인터페이스 정의

먼저, 아래와 같이 MyInterface라는 인터페이스를 정의합니다.

public interface MyInterface {
    void myMethod();
}

2.2. 리플렉션을 사용한 메소드 호출

다음은 리플렉션을 사용하여 MyInterface의 메소드를 호출하는 예제 코드입니다.

import java.lang.reflect.Method;

public class ReflectionExample {
    public static void main(String[] args) throws Exception {
        // 인터페이스 이름으로 클래스를 동적으로 생성
        Class<?> myInterfaceClass = Class.forName("com.example.MyInterfaceImpl");
        
        // 메소드 이름으로 메소드 찾기
        Method method = myInterfaceClass.getMethod("myMethod");

        // 객체 생성
        Object obj = myInterfaceClass.newInstance();

        // 메소드 호출
        method.invoke(obj);
    }
}

위 예제에서는 Class.forName() 메소드를 이용하여 인터페이스를 구현한 클래스를 동적으로 생성하고, getMethod() 메소드를 이용하여 메소드를 찾은 뒤 invoke() 메소드로 메소드를 호출합니다.

3. 결론

이렇게 리플렉션을 사용하면 실행 중에 메소드를 동적으로 호출할 수 있어, 다양한 상황에서 유연하게 클래스의 동작을 제어할 수 있습니다.

이상으로 Java에서 리플렉션을 사용하여 인터페이스의 메소드를 호출하는 방법에 대해 알아보았습니다. 감사합니다.

참고 자료