Instantiate a class by name stores in String

Default featured post

For beginners like me that are not very familiar with object oriented concepts, it might be impossible to imagine that Java has a capability to instantiate a class by its name stored in a string variable. However, this is totally possible in Java or even in other programming languages with utilizing reflector/reflection concept.

Take a look at below example,

public class A {
private int x;
public void setX(int x) {
this.x = x;
}
public int getX() {
return this.x;
}
}
view raw A.java hosted with ❤ by GitHub

Now the objective is to create an instance of class A which its name stored in variable, this code does that.

public class Test {
public void main(String[] args) {
String className = "A";
Class myClass = Class.forName(className);
//Now need to make an object
// This is a general Object type, must convert to call method.
Object obj = myClass.newInstance();
A aClass = (A) obj;
//Shorter way
A aClass = (A) Class.forName(className).newInstance();
}
}
view raw Test.java hosted with ❤ by GitHub

Now it might be a question what the reflection is used for, the answer is so simple, one practical example is making database connection.

You can refer to the following links for DB connection.

Resources