The Class
instances for the primitive types are obtainable as you said using e.g. int.class
, but it is also possible to get the same values using something like Integer.TYPE
. Each primitive wrapper class contains a static field, TYPE
, which has the corresponding primitive class instance.
You cannot obtain the primitive class via forName
, but you can get it from a class which is readily available. If you absolutely must use reflection, you can try something like this:
Class clazz = Class.forName("java.lang.Integer");
Class intClass = clazz.getField("TYPE").get(null);
intClass.equals(int.class); // => true