Если вы действительно хотите получить статический тип так, как вам нужно, вы можете пробиться к нему, используя приведение (хотя и через необработанные типы):
Class<Map<String, Object>> cl = (Class) Map.class;
Однако, как указано в других комментариях и другихответ, это не поможет вам, так как во время выполнения ваш class.getConstructor()
вызов все равно будет видеть только Map.class
.Просто рассмотрите подпись getConstructor
:
getConstructor(Class<?>... parameterTypes)
Реализация извлекает конструктор путем сравнения параметров (проверьте источник java.lang.Class.arrayContentsEq(Object[], Object[])
).Подводя итог, можно сказать, что сравнение сводится к (Class) cl == Map.class
, а во время выполнения возвращается true
, что объясняет, почему бесполезно искать экземпляр общего класса.
Значение Class<Map<String, Object>> cl
будетэффективны только в том случае, если они использовались для статической проверки типов, но в этом случае это не помогает.