4.5.3 메서드 호출
Field 객체로 객체의 필드를 읽고 쓸 수 있는 것처럼 Method 객체로 객체의 메서드를 호출할 수 있다.
Method m = ...;
Object result = m.invoke(obj, arg1, arg2, ...);
정적 메서드를 호출할 때는 첫 번째 인수로 null을 전달해야 한다.
원하는 메서드를 얻어 내려면 4.5.1 클래스 멤버 나열에서 살펴본 getMethods나 getDeclaredMethods를 호출한 후 반환받는 배열을 검색하면 된다. 매개변수 타입을 제공하면서 getMethod를 호출하는 방법도 있다. 예를 들어 Person 객체에서 setName(String) 메서드를 얻어 오려면 다음과 같이 한다.
Person p = ...;
Method m = p.getClass().getMethod("setName", String.class);
m.invoke(obj, "********");
Caution
clone은 모든 배열 타입의 공개 메서드이지만, 배열을 기술하는 Class 객체의 getMethod를 호출하는 방법으로는 얻어 올 수 없다.5
5 배열의 슈퍼클래스(Object)를 기술하는 Class 객체로 clone 메서드를 얻어야 한다.