Monday, July 2, 2012

Create an object from a string in Java?

import java.lang.reflect.*;

Class [] classParm = null;
Object [] objectParm = null;

try {
    String name = "com.rgagnon.MyClass";
    Class cl = Class.forName(name);
    java.lang.reflect.Constructor co = cl.getConstructor(classParm);
    return co.newInstance(objectParm);
}
catch (Exception e) {
    e.printStackTrace();
    return null;
}



Another example, but this time we are passing a parameter to the //constructor and calling a method dynamically.

public class Test {
    public static void main(String args[]) {
        
        try {
            String name = "java.lang.String";
            String methodName = "toLowerCase";
            
            // get String Class
            Class cl = Class.forName(name);
            
            // get the constructor with one parameter
            java.lang.reflect.Constructor constructor =cl.getConstructor(new Class[] {String.class});
            
            // create an instance
            Object invoker =constructor.newInstance (new Object[]{"REAL'S HOWTO"});
            
            // the method has no argument
            Class  arguments[] = new Class[] { };
            
            // get the method
            java.lang.reflect.Method objMethod = cl.getMethod(methodName, arguments);
            
            // convert "REAL'S HOWTO" to "real's howto"
            Object result =objMethod.invoke(invoker, (Object[])arguments);
            
            System.out.println(result);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

No comments:

Post a Comment