Convert java.lang.reflect.Type to Class<T> clazz

You have to ensure that type is an instance of Class, and then cast it.

if (type instanceof Class) {
  Class<?> clazz = (Class<?>) type;
  otherMethod(clazz);
}

Of course, you also have to handle the case of it not being a Class.


If you are willing to use a library, you could use com.google.guava:guava:12+:

Class<?> clazz = com.google.common.reflect.TypeToken.of(type).getRawType();

Alternatively you could also use com.fasterxml.jackson.core:jackson-databind:2.8.x:

Class<?> clazz = com.fasterxml.jackson.databind.type.TypeFactory.rawClass(type);

This handles all cases correctly and you will get the type-erased class of your type.

Tags:

Java

Generics