Java에는 클래스 메소드를 호출하는 두 가지 방법이 있습니다. 정적 메소드의 경우 클래스 이름을 직접 호출 할 수 있으며 비 정적 메소드의 경우 클래스 객체 호출을 사용해야합니다. 반사 메커니즘은 비교적 대안적인 호출 방법을 제공하며, 이는 프로그래밍 중에 결정을 내릴 필요없이 필요에 따라 호출 할 방법을 지정할 수 있습니다. 불리는 방법은 공개에 국한되지 않지만 개인 일 수도 있습니다. 반사 메커니즘을 사용하여 정적 메소드 sin ()을 호출하는 프로그램을 작성하고 수학 클래스의 비 정적 메소드 equals ().
아이디어는 다음과 같습니다. math.class.getDeclaredMethod ( "sin", double.type)를 사용하십시오. "sin"은 액세스 할 메소드의 이름이 sin이고 double.type를 의미합니다. 입력 매개 변수의 유형은 이중입니다.
코드는 다음과 같습니다.
코드 사본은 다음과 같습니다.
import java.lang.reflect.method;
공개 클래스 동티 {
public static void main (String [] args) {
노력하다 {
System.out.println ( "수학 클래스의 정적 메소드 sin () 호출");
메소드 sin = math.class.getDeclaredMethod ( "sin", double.type);
double sin1 = (double) sin.invoke (null, new Integer (1));
System.out.println ( "1의 사인 값은 :" + sin1);
System.out.println ( "문자열 클래스의 비 정적 메소드 equals () 호출");
메소드 equals = string.class.getDeclaredMethod ( "equals", object.class);
부울 mrsoft = (부울) equals.invoke (새로운 문자열 ( "내일 기술"), "내일 기술");
System.out.println ( "The String Tomorrow 기술입니다 :" + Mrsoft);
} catch (예외 e) {
e.printstacktrace ();
}
}
}
효과는 그림에 나와 있습니다.