Example of Reflection
Example of Fields
Example of Package
Example of Constructors
Examples of Calling Static Method
Example of Calling Method With Parameter
Example of Accessing Private Members Outside The Class
Field Example
T.java
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
public class Demo2
{
public static void main(String[] args) throws
IllegalArgumentException, IllegalAccessException
{
T obj = new T();
Class c = obj.getClass();
// Field Read
Field fields [] = c.getDeclaredFields();
for(Field field : fields)
{
System.out.println("name "+field.getName());
int fieldModifier = field.getModifiers();
if(Modifier.isPrivate(fieldModifier))
{
System.out.println("this is private");
}
if(Modifier.isStatic(fieldModifier))
{
System.out.println("this is static");
}
boolean isPrimitive = field.getType().isPrimitive();
if(isPrimitive)
{
System.out.println("this is Primitive Type ");
if(field.getType().isAssignableFrom(Integer.TYPE)){
System.out.println("int");
field.setAccessible(true);
int defaultIntValue = field.getInt(obj);
System.out.println("Int Default Value is "+defaultIntValue);
defaultIntValue = 100;
field.setInt(obj, defaultIntValue);
defaultIntValue = (Integer)field.get(obj); // field.getInt(obj);
System.out.println("Int New Value is "+defaultIntValue);
}
if(field.getType().isAssignableFrom(Float.TYPE))
{
System.out.println("float");
float defaultfloatValue = field.getFloat(obj);
System.out.println("float Default Value is "+defaultfloatValue);
defaultfloatValue = 1000.0f;
field.setFloat(obj, defaultfloatValue);
defaultfloatValue = (Float)field.get(obj); // field.getFloat(obj);
System.out.println("float New Value is "+defaultfloatValue);
}
}
}
}
}
Demo2.java
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
public class Demo2
{
public static void main(String[] args) throws
IllegalArgumentException, IllegalAccessException
{
T obj = new T();
Class c = obj.getClass();
// Field Read
Field fields [] = c.getDeclaredFields();
for(Field field : fields)
{
System.out.println("name "+field.getName());
int fieldModifier = field.getModifiers();
if(Modifier.isPrivate(fieldModifier))
{
System.out.println("this is private");
}
if(Modifier.isStatic(fieldModifier))
{
System.out.println("this is static");
}
boolean isPrimitive = field.getType().isPrimitive();
if(isPrimitive)
{
System.out.println("this is Primitive Type ");
if(field.getType().isAssignableFrom(Integer.TYPE)){
System.out.println("int");
field.setAccessible(true);
int defaultIntValue = field.getInt(obj);
System.out.println("Int Default Value is "+defaultIntValue);
defaultIntValue = 100;
field.setInt(obj, defaultIntValue);
defaultIntValue = (Integer)field.get(obj); // field.getInt(obj);
System.out.println("Int New Value is "+defaultIntValue);
}
if(field.getType().isAssignableFrom(Float.TYPE))
{
System.out.println("float");
float defaultfloatValue = field.getFloat(obj);
System.out.println("float Default Value is "+defaultfloatValue);
defaultfloatValue = 1000.0f;
field.setFloat(obj, defaultfloatValue);
defaultfloatValue = (Float)field.get(obj); // field.getFloat(obj);
System.out.println("float New Value is "+defaultfloatValue);
}
}
}
}
}
Output
T class default cons name x this is private this is Primitive Type int Int Default Value is 0 Int New Value is 100 name y this is private this is Primitive Type int Int Default Value is 0 Int New Value is 100 name z this is Primitive Type float float Default Value is 0.0 float New Value is 1000.0
Example of Package
Package Example
T.java
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
final class T
{
private int x,y;
float z;
T()
{
System.out.println("T class default cons");
}
private int add(int x, int y)
{
System.out.println("Inside Add x is "+x+" And y is "+y);
return x+y;
}
public void show()
{
System.out.println("T Show");
}
static void disp()
{
System.out.println("T Static Disp ");
}
public static void output(String w)
{
System.out.println("T static output "+w);
}
}
Demo3.java
public class Demo3
{
public static void main(String[] args)
{
String a ="ABcd";
Package packages = a.getClass().getPackage();
for(Package pp : packages.getPackages())
{
System.out.println("Name :"+pp.getName());
System.out.println("Title :"+pp.getImplementationTitle());
System.out.println("Vendor :"+pp.getImplementationVendor());
System.out.println("Version :"+pp.getImplementationVersion());
}
}
}
Output
Name :javax.swing.tree Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.util.resources Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.net Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.awt.image Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.reflect.misc Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :org.w3c.dom.ranges Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :org.xml.sax Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :javax.swing.plaf Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :javax.swing.filechooser Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.util.zip Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.net.www Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.java2d.pipe.hw Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :com.web Title :null Vendor :null Version :null Name :sun.swing.table Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.awt.event Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :com.sun.awt Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.util.concurrent Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :javax.swing.plaf.basic Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :javax.swing.border Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.lang.invoke Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.nio.channels.spi Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.util.concurrent.locks Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :javax.security.auth Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :org.w3c.dom Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.lang.reflect Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.nio.cs Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.awt.font Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.text.resources Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :javax.swing.table Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.security.spec Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.awt.datatransfer Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.nio.ch Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.beans Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.awt.print Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.lang.annotation Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.launcher Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.awt.dnd Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :org.w3c.dom.traversal Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.security.action Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.nio.charset Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.applet Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.math Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.nio Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.awt.shell Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.applet Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :com.sun.swing.internal.plaf.metal.resources Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.lang.ref Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :javax.swing.event Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.misc Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.awt.dnd.peer Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.net.www.protocol.file Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.util.concurrent.atomic Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.awt Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.java2d.pipe Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :org.w3c.dom.events Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :com.sun.swing.internal.plaf.basic.resources Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.net.www.protocol.http Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.text Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :com.sun.java.swing.plaf.windows Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.awt.im Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.reflect Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.security.cert Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.rmi Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.awt.geom Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.util.spi Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :javax.swing.plaf.metal Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :javax.accessibility Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.font Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.util.jar Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.security.jca Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.print Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.security.provider Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.swing Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.awt.resources Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.awt.im.spi Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :javax.swing Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.io Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.text.spi Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.awt.datatransfer Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.lang Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.awt.event Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.net.spi.nameservice Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.awt.color Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :javax.xml.parsers Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.awt Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.text.normalizer Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :javax.sound.sampled Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :javax.swing.undo Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :org.xml.sax.helpers Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.util.logging Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.awt.peer Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :javax.swing.text Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.util Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.util Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.nio.channels Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.net Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.java2d.windows Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.security.interfaces Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.net.www.protocol.jar Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.awt.dnd Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.java2d Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.io Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.awt.image Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.util.regex Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.java2d.cmm Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.util.locale Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.awt.windows Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.nio.charset.spi Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.nio Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.text Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.java2d.opengl Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.java2d.loops Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :java.security Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.applet.resources Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.awt.im Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.security.util Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :com.sun.java.swing.plaf.windows.resources Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.security.x509 Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.net.spi Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.util.calendar Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0 Name :sun.net.util Title :Java Runtime Environment Vendor :Oracle Corporation Version :1.7.0
Example of Constructors
Constructor Example
T.java
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
// a.getClass() returns the runtime type of a. I.e.,-
//if you have A a = new B(); then a.getClass() will return the B class.
//A.class evaluates to the A class statically,-
//and is used for other purposes often related to reflection.
final class T
{
private int x,y;
float z;
T()
{
System.out.println("T class default cons");
}
private int add(int x, int y)
{
System.out.println("Inside Add x is "+x+" And y is "+y);
return x+y;
}
public void show()
{
System.out.println("T Show");
}
static void disp()
{
System.out.println("T Static Disp ");
}
public static void output(String w)
{
System.out.println("T static output "+w);
}
}
Demo1.java
public class Demo1
{
public static void main(String[] args)
{
//Class c = T.class;
T obj = new T();
Class cls = obj.getClass();
Constructor cons [] = cls.getDeclaredConstructors();
for(Constructor cc : cons)
{
System.out.println(" Cons Name "+cc.getName());
}
System.out.println("Class Name is "+cls.getName());
int modifer = cls.getModifiers();
//System.out.println("Modifer is "+modifer);
if(Modifier.isPublic(modifer))
{
System.out.println("This class is Having public Modifier");
}
else
{
System.out.println("This class is Having default Modifier");
}
if(Modifier.isFinal(modifer))
{
System.out.println("This class is Final class");
}
if(Modifier.isAbstract(modifer))
{
System.out.println("this is abstract class");
}
String superClassName = cls.getSuperclass().getName();
System.out.println("Super Class Name "+superClassName);
if(cls.isInterface())
{
System.out.println("This is Interface");
}
else
{
System.out.println("This is a class");
}
}
}
Output
T class default cons Cons Name com.web.T Class Name is com.web.T This class is Having default Modifier This class is Final class Super Class Name java.lang.Object This is a class
Examples of Calling Static Method
Calling Static Method
T.java
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
final class T
{
private int x,y;
float z;
T()
{
System.out.println("T class default cons");
}
private int add(int x, int y)
{
System.out.println("Inside Add x is "+x+" And y is "+y);
return x+y;
}
public void show()
{
System.out.println("T Show");
}
static void disp()
{
System.out.println("T Static Disp ");
}
public static void output(String w)
{
System.out.println("T static output "+w);
}
}
Demo5.java
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Demo5
{
public static void main(String[] args)
{
T obj = new T();
Class cls = obj.getClass();
Method methods [] = cls.getDeclaredMethods();
String methodName = "";
for(Method method: methods)
{
methodName = method.getName();
if(Modifier.isStatic(method.getModifiers()))
{
System.out.println("This is Static Method...."+methodName);
}
else
{
System.out.println("This is not Static Method "+methodName);
}
}
}
}
Output
T class default cons This is Static Method....disp This is Static Method....output This is not Static Method add This is not Static Method show
Example of Calling Method With Parameter
Calling Method With Parameter
T.java
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
final class T
{
private int x,y;
float z;
T()
{
System.out.println("T class default cons");
}
private int add(int x, int y)
{
System.out.println("Inside Add x is "+x+" And y is "+y);
return x+y;
}
public void show()
{
System.out.println("T Show");
}
static void disp()
{
System.out.println("T Static Disp ");
}
public static void output(String w)
{
System.out.println("T static output "+w);
}
}
Demo6.java
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Demo6
{
public static void main(String[] args) throws NoSuchMethodException,
SecurityException, IllegalAccessException, IllegalArgumentException,
InvocationTargetException
{
T obj = new T();
Class cls = obj.getClass();
Class parameterTypes[] = new Class[]{int.class, int.class};
Method method = cls.getDeclaredMethod("add", parameterTypes);
method.setAccessible(true);
int result = (int)method.invoke(obj, 100,200);
System.out.println("result is "+result);
//Calling static method
parameterTypes = new Class[]{String.class};
method = cls.getDeclaredMethod("output", parameterTypes);
if(Modifier.isStatic(method.getModifiers()))
{
method.invoke(null, "Hello Static");
}
}
}
Output
T class default cons Inside Add x is 100 And y is 200 result is 300 T static output Hello Static
Example of Accessing Private Members Outside The Class
Accessing Private Members Outside The Class
T.java
import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
final class T
{
private int x,y;
float z;
T()
{
System.out.println("T class default cons");
}
private int add(int x, int y)
{
System.out.println("Inside Add x is "+x+" And y is "+y);
return x+y;
}
public void show()
{
System.out.println("T Show");
}
static void disp()
{
System.out.println("T Static Disp ");
}
public static void output(String w)
{
System.out.println("T static output "+w);
}
}
Demo4.java
import java.lang.reflect.Method;
public class Demo4
{
public static void main(String[] args)
{
T obj = new T();
Class cls = obj.getClass();
Method methods [] = cls.getDeclaredMethods();
for(Method method : methods)
{
System.out.println("Name "+method.getName());
}
}
}
Output
T class default cons Name disp Name output Name add Name show


