반사 메커니즘을 사용하면 프로그램이 런타임에 메서드를 호출할 수 있습니다. 단계는 다음과 같습니다. 클래스 개체를 가져오고 메서드 개체를 가져옵니다. 객체 인스턴스와 매개변수를 전달하여 메서드를 호출합니다. 리플렉션을 사용하여 Employee 클래스의 getName() 메서드를 호출하고 "John Doe"를 반환합니다.
Java 리플렉션 메커니즘 호출 메서드
Java 리플렉션 메커니즘을 사용하면 프로그램이 런타임 시 클래스의 정보와 동작을 얻고 수정할 수 있습니다. 프레임워크, 테스트 및 디버깅 도구에 널리 사용됩니다.
리플렉션을 사용하여 메소드 호출
다음 단계에 따라 리플렉션을 사용하여 메소드를 호출할 수 있습니다.
Class.forName()
을 사용하여 클래스의 클래스 객체입니다. Class.forName()
获取类的 Class 对象。getMethod()
或 getMethods()
获取方法的 Method 对象。invoke()
方法调用方法,传入对象实例和参数(如果有)。语法
Method method = Class.forName("ClassName").getMethod("methodName", parameterTypes); Object result = method.invoke(objectInstance, parameters);
其中:
ClassName
是要调用的类名。methodName
是要调用的方法名。parameterTypes
是方法参数类型的数组。objectInstance
是要调用方法的对象实例(如果方法是非静态方法)。parameters
是要传递给方法的参数数组。实战案例
假设有一个 Employee
类,其中有以下方法:
public class Employee { public String getName() { return "John Doe"; } }
现在,让我们使用反射机制调用 getName()
方法:
Class<?> employeeClass = Class.forName("Employee"); Method getNameMethod = employeeClass.getMethod("getName"); String name = (String) getNameMethod.invoke(new Employee()); System.out.println(name); // 输出:John Doe
在这个示例中,我们首先获取 Employee
类的 Class 对象。然后,我们获取 getName()
方法的 Method 对象。最后,我们创建一个 Employee
对象的实例并使用反射调用 getName()
getMethod()
또는 getMethods()
를 사용하여 메서드의 Method 개체를 가져옵니다. 🎜🎜Call 메서드: 🎜 invoke()
메서드를 사용하여 메서드를 호출하고 개체 인스턴스와 매개변수(있는 경우)를 전달합니다. 🎜🎜Syntax🎜🎜rrreee🎜여기서: 🎜ClassName
은 호출할 클래스 이름입니다. 🎜methodName
은 호출할 메서드의 이름입니다. 🎜parameterTypes
는 메소드 매개변수 유형의 배열입니다. 🎜objectInstance
는 메서드가 호출될 객체 인스턴스입니다(메서드가 비정적 메서드인 경우). 🎜parameters
는 메소드에 전달될 매개변수의 배열입니다. Employee
클래스가 있다고 가정합니다. 🎜rrreee🎜이제 리플렉션 메커니즘을 사용하여 getName( )
메서드: 🎜rrreee🎜이 예에서는 먼저 Employee
클래스의 Class 개체를 가져옵니다. 그런 다음 getName()
메서드에 대한 Method 개체를 가져옵니다. 마지막으로 Employee
객체의 인스턴스를 생성하고 리플렉션을 사용하여 getName()
메서드를 호출합니다. 🎜위 내용은 Java 리플렉션 메커니즘은 메소드를 어떻게 호출합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!