Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get a Class Object from the Class Name in Java

I know the class name, say "MyClass" and want to retrieve the Class object, ie. MyClass.class for future references. Is there a way to do that?

I've looked through the web but most of the things I found related to it were about the ClassLoader, which I presume are not suitable for my case. I do not want to initialize a class, but only get a class object for future uses.

EDIT: Regarding the first answers to this:

I've already checked the forName() method but I thought that is supposed to also initialize the class. Now I can call it with the full arguments and pass false to the second argument, but would the third have to be null or what?

Would

Class.forName("MyClass", false, null); 

return MyClass.class?

In fact, what I want to do, is replace an array of String IDs associated with Class objects, with an array of IDs from which the class objects are fetched automatically, to get rid of some manual work :)

Thanks for the quick answers and sorry for not mentioning this before.

like image 993
alkar Avatar asked Sep 17 '09 12:09

alkar


People also ask

How do you return an object from a class in Java?

"In order to return an object from a Java method, you must first declare a variable to hold a reference to the object." So in this case, Ball is a variable that is a reference to the object. Correct? redBall is a reference to the object created by the new Ball("red") statement.

Can we use class name as an object?

Yes, It is allowed to define a method with the same name as that of a class. There is no compile-time or runtime error will occur.

How do you get an object in Java?

Field get() method in Java with Examples If the field is hidden in the type of obj, the field's value is obtained according to the preceding rules. Parameters: This method accepts a single parameter obj which is the object to extract the field value from.


2 Answers

You can use:

Class c = Class.forName("com.package.MyClass"); 

And later instantiate an object:

Object obj = c.newInstance(); 

EDIT: This is just the simplest use case. As indicated in the comments, you will need to consider constructor arguments and exceptions thrown by the initialization process. The JavaDocs for newInstance has all the details.

like image 91
Tony the Pony Avatar answered Oct 06 '22 17:10

Tony the Pony


Class.forName("MyClass") 

Read the JavaDoc for details

like image 41
Joachim Sauer Avatar answered Oct 06 '22 15:10

Joachim Sauer