The java.lang.Class provides the methods to examine the runtime properties of the object including its members and type information. For every type of object, the JVM instantiates an immutable instance of java.lang.Class. Using reflection, we can get the metadata of a class at run time.
We can get class object in java by using following approaches:
- forName() method of Class class
- getClass() method of Object class
- the .class syntax
Note: When using forName() method we must pass the fully qualified class name.
Example
Shape.java
package com.codesjava; public interface Shape { public void drawShape(String color); } |
Rectangle.java
package com.codesjava; public class Rectangle implements Shape{ private int defaultLength = 10; private int defaultWidth = 5; @Override public void drawShape(String color) { System.out.println("Rectangle create with following properties: "); System.out.println("Length: " + defaultLength); System.out.println("Width: " + defaultWidth); } } |
ReflectionTest.java
package com.codesjava; public class ReflectionTest { public static void main(String args[]){ try { //Using forName() method Class c=Class.forName("com.codesjava.Rectangle"); System.out.println(c.getName()); //Using getClass() method of Object class Rectangle object = new Rectangle(); c= object.getClass(); System.out.println(c.getName()); //.class syntax c = Rectangle.class; System.out.println(c.getName()); } catch (Exception e) { e.printStackTrace(); } } } |
Output
com.codesjava.Rectangle com.codesjava.Rectangle com.codesjava.Rectangle |