|
다른 클래스의 특정 메서드를 실행시키고 싶을 때, 클래스객체를 생성해서 클래스 문을 열고 들어가 실행하는 것은 당연하지만,
예를들면, 안드로이드 이미지뷰를 상속받은 클래 스와 같이 생성자 매개변수를 가져오기 까다로와 객체 생성이 어려울때,
사용할 수 있는 유용한 메서드,java.lang.reflect 패키지에 있는... |
Method.invoke() 인보크....
Object java.lang.reflect.Method.invoke(Object receiver, Object... args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException
레퍼런스 : http://developer.android.com/reference/java/lang/reflect/package-summary.html
객체지향과는 거리가 멀어지는 메서드이지만 꼭 필요한 경우, 어디든지 무대포로 뚫고 들어가 실행시켜주는 고마운 만능키(?) 메서드 하지만 예외처리가 중요. 왠지 남용해서는 안될 듯한 ......
Object receiver : 실행시킬 메서드가 있는 클래스의 객체, 미리 해당 클래스에서
Object 멤버변수(receiver)를 static으로 지정해서 this 예약어(클래스 자신을 지칭하는 객체)를 대입하면 됨.
>>호출방법 ClassName.receiver
receiver.getClass().getMethod() : 동적으로 원하는 해당 클래스의 메서드에 접근
methodName : 실행할 메서드 이름, String
Object.class : 실행할 메서드의 매개변수형
invoke(): Method 클래스의 메서드, 동적으로 호출된 메서드의 결과(Object) 리턴
args : 매개변수값, Object
try { //동적으로 다른 클래스의 메서드 호출, 예외처리에 신중할 것 .invoke(receiver, args); // .invoke (클래스 객체, 매개변수값) } } |
만일 실행 메서드의 매개변수가 없을 경우에는 Object.class 항에 (Class<?>[]) null 로 코딩하면 된다. 물론 invoke() 메서드의 매개변수에는 invoke(receiver) 같이 매개변수값 없음.
'Android' 카테고리의 다른 글
cocos2d-x 1.01 ripple, wave, liquid 응용 (0) | 2013.07.12 |
---|---|
Bresenham 브레센함 알고리듬 : 원 그리기 (0) | 2013.03.07 |
Conway's Game Of Life Java code (0) | 2012.10.05 |
Android image crop (0) | 2012.09.19 |
Android Screen Capture (0) | 2012.07.19 |