Tuesday, March 17, 2015

Java setAccessible Method

Can you access a method, or field that isn't accessible? YES, you can.
(You can't declare a class that isn't accessible)
Using the setAccessible method you can access any method or field.


package access;

/**

 @author 
 */
public class A{
 private String message="Hello";

 private String getMessage(){
  return message;
 }
}


package access;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**

 @author
 */
public class AccessTest{

 /**
  @param args the command line arguments
  */
 public static void main(String[] args)
  throws Exception{
  A a=new A();

  Method method=a.getClass().getDeclaredMethod("getMessage",new Class[]{});
  method.setAccessible(true);
  System.out.println(method.invoke(a,new Object[]{}));
  Field field=a.getClass().getDeclaredField("message");
  field.setAccessible(true);
  System.out.println(field.get(a));
 }
}

No comments:

Post a Comment