In Java what pros/cons exist surrounding the choice to use a.getClass()
or A.class
? Either can be used wherever a Class<?>
is expected, but I imagine that there would be performance or other subtle benefits to using both in different circumstances (just like there are with Class.forName()
and ClassLoader.loadClass()
.
I wouldn't compare them in terms of pros/cons since they have different purposes and there's seldom a "choice" to make between the two.
a.getClass()
returns the runtime type of a
. I.e., if you have A a = new B();
then a.getClass()
will return the B
class.
A.class
evaluates to the A
class statically, and is used for other purposes often related to reflection.
In terms of performance, there may be a measurable difference, but I won't say anything about it because in the end it is JVM and/or compiler dependent.