Monday 6 November 2017

How to call the get method using Java Reflection | Reflection in java


Click here to watch in Youtube :
https://www.youtube.com/watch?v=T24VPOZ7RuU&list=UUhwKlOVR041tngjerWxVccw

Student.java
class Student
{
    private String name;

    public Student(String name)
    {
        this.name = name;
    }

    private String getName()
    {
        return name;
    }

}
ReflectionDemo.java
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * 
 * Despite the common belief it is actually possible to access private fields
 * and methods of other classes via Java Reflection. It is not even that
 * difficult. This can be very handy during unit testing.
 *
 */
public class ReflectionDemo
{
    public static void main(String[] args)
    {
        try
        {
            Class classObj = Student.class;         
            Method privateGetNameMethod = classObj.getDeclaredMethod("getName", null);

            /*
             * Set the accessible flag for this object to the indicated boolean
             * value. A value of true indicates that the reflected object should
             * suppress Java language access checking when it is used. A value
             * of false indicates that the reflected object should enforce Java
             * language access checks.
             * 
             * First, if there is a security manager, its checkPermission method
             * is called with a ReflectPermission("suppressAccessChecks")
             * permission.
             * 
             * By calling Method.setAcessible(true) you turn off the access
             * checks for this particular Method instance, for reflection only.
             * Now you can access it even if it is private, protected or package
             * scope, even if the caller is not part of those scopes.
             * 
             */
            privateGetNameMethod.setAccessible(true);
            
            Student student = new Student("Peter");
            String returnValue = (String) privateGetNameMethod.invoke(student,null);

            System.out.println("returnValue = " + returnValue);
        }
        catch (NoSuchMethodException | InvocationTargetException
                | IllegalAccessException | IllegalArgumentException e)
        {
            e.printStackTrace();
        }

    }

}
Output
returnValue = Peter

Click the below link to download the code:
https://sites.google.com/site/ramj2eev1/home/javabasics/ReflectionDemo_call_private_getmethod.zip?attredirects=0&d=1

Github Link:
https://github.com/ramram43210/Java/tree/master/BasicJava/ReflectionDemo_call_private_getmethod

Bitbucket Link:
https://bitbucket.org/ramram43210/java/src/35f19409ce262cff1a4ed631c9adc6ca413c2cb0/BasicJava/ReflectionDemo_call_private_getmethod/?at=master

See also:
  • All JavaEE Viedos Playlist
  • All JavaEE Viedos
  • All JAVA EE Links
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • Kids Tutorial
  • No comments:

    Post a Comment