Как @Jesper сказал, вы пытаетесь пересечь области времени компиляции и времени выполнения.
Прежде всего, поймите, что Java-дженерики - это функция строго компиляции - то есть когда ваш источник java компилируется в байтовый код, «дженерики», как вы видите их в своем источнике, ушли. Я бы предложил прочитать на type erasure для получения дополнительной информации по этому вопросу.
Так что же делает компилятор с дженериками? Он проверяет, что действия и операции безопасны, а затем автоматически вставляет различные операции в ваш скомпилированный код для вас. Здесь проблема заключается в том, что вы запрашиваете компилятор для выполнения операций на основе параметра, предоставленного во время выполнения. Суть в том, что, поскольку компилятор не имеет доступа к значениям времени выполнения, он не может скомпилировать генерические файлы и возникает ошибка.
Отличная дискуссия о том, почему Java Generics были разработаны без овеществления @ Neal Gafter's Blog.
Вы смешиваете понятия времени компиляции и времени выполнения. Дженерики предназначены для проверки типов во время компиляции. Они не полезны, если вы не знаете тип до выполнения. Вы не можете использовать значение переменной, которое вы знаете только во время выполнения, в качестве параметра типа. – Jesper
Нет, поскольку аргумент type является infact 'type', а не объектом класса для каждого. –