Thursday, 2 November 2017

How to access the attribute using Java Reflection | Reflection in java


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

Student.java
class Student
{
    private String name;

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

}
ReflectionDemo.java
import java.lang.reflect.Field;

/**
 *
 * 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;
            Field privateFieldObj = classObj.getDeclaredField("name");
            /*
             * 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 Field.setAcessible(true) you turn off the access
             * checks for this particular Field 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.
             */
            privateFieldObj.setAccessible(true);
            Student student = new Student("Peter");
            String fieldValue = (String) privateFieldObj.get(student);
            System.out.println("privateNameField value = " + fieldValue);
        }
        catch (NoSuchFieldException | SecurityException
                | IllegalArgumentException | IllegalAccessException e)
        {
            e.printStackTrace();
        }

    }

}
Output
privateNameField value = Peter

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

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

Bitbucket Link:
https://bitbucket.org/ramram43210/java/src/35f19409ce262cff1a4ed631c9adc6ca413c2cb0/BasicJava/ReflectionDemo_access_private_field/?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