2013년 12월 14일 토요일

android Accessing Private Methods

안드로이드의 Private메소드에 접근하는 방법..

package package1;


public class ABC {
    
ABC(){
        System.out.println("constructor");
    }
}



위 같은 코드가 있을때 아래와 같이 접근 가능하단다..


Class<?> c = Class.forName("package1.ABC");//full package name

Constructor<?> constructor = c.getDeclaredConstructor();
constructor.setAccessible(true);
Object o = constructor.newInstance(null);


내부클래스를 생성할 경우는.. 이렇게 접근하면 된단다.
Class<?> clazz = Class.forName("package1.Outer$Inner");



Private Method에 접근하는 방법도 있다.
아래와 같은 클래스가 있는데....

public class ABC {

  private String string = null;

  public ABC(String string) {
    this.string = string;
  }

  private String getString(){
    return this.string;
  }
}


getString함수에 접근해서 실행하고자 한다면~~
아래를 참고하자~

ABC abc = new ABC("The Private Value");

Method abcMethod = ABC.class.getDeclaredMethod("getString", null);

abcMethod.setAccessible(true);

String value = (String)abcMethod.invoke(abc, null);
    
System.out.println("value = " + value);





댓글 없음:

댓글 쓰기