더북(TheBook)

4.5.3 메서드 호출


Field 객체로 객체의 필드를 읽고 쓸 수 있는 것처럼 Method 객체로 객체의 메서드를 호출할 수 있다.

Method m = ...;

Object result = m.invoke(obj, arg1, arg2, ...);


정적 메서드를 호출할 때는 첫 번째 인수로 null을 전달해야 한다.

원하는 메서드를 얻어 내려면 4.5.1 클래스 멤버 나열에서 살펴본 getMethodsgetDeclaredMethods를 호출한 후 반환받는 배열을 검색하면 된다. 매개변수 타입을 제공하면서 getMethod를 호출하는 방법도 있다. 예를 들어 Person 객체에서 setName(String) 메서드를 얻어 오려면 다음과 같이 한다.

Person p = ...;

Method m = p.getClass().getMethod("setName", String.class);

m.invoke(obj, "********");


icon Caution

clone은 모든 배열 타입의 공개 메서드이지만, 배열을 기술하는 Class 객체의 getMethod를 호출하는 방법으로는 얻어 올 수 없다.5


5 배열의 슈퍼클래스(Object)를 기술하는 Class 객체로 clone 메서드를 얻어야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.