Wednesday 22 September 2010

Retrieving class objects using reflection in java

You can retrieve a Class object in several ways:
  • Using getClass methodIf an instance of the class is available, you can invoke Object.getClass. The getClass method is useful in situations when you want to examine an object, but you don't know its class. The following line of code gets the Class object for an object named mystery:

    Class c = mystery.getClass();
  • If you want to retrieve the Class object for the superclass that another Class object reflects, invoke the getSuperclass method. In the following example, getSuperclass returns the Class object associated with the the TextComponent class, because TextComponent is the superclass of TextField:

    TextField t = new TextField(); 
    Class c = t.getClass();
    Class s = c.getSuperclass();
  • Using .class if you know the name of the class at compile timeIf you know the name of the class at compile time, you can retrieve its Class object by appending .class to its name. In the next example, the Class object that represents the Button class is retrieved:

    Class c = java.awt.Button.class;
    i.e. Class c = ClassName.class; 
  • Using forName()
    If the class name is unknown at compile time, but available at run time, you can use the forName method. In the following example, if the String named strg is set to "java.awt.Button" then forName returns the Class object associated with the Button class:

    Class c = Class.forName(strg); 
    It is possible that class we are fetching at runtime does not exist, so we have to catch ClassNotFoundException.

No comments:

Post a Comment