У меня есть класс, который использует generics. Потому что необходима ссылка на общий тип, конструктор имеет Class
параметр (как обсуждалось в this question), так это выглядит следующим образом:Двойное генерирование в Java
MyGenericClass<T>
public MyGenericClass(final Class<T> valueClass) {
this.clazz = valueClass;
}
Теперь я хочу передать MyGenericClass как T, но я могу» t заставить его работать.
MyGenericClass<MyGenericClass<String>> foo =
new MyGenericClass<MyGenericClass<String>>(MyGenericClass<String>.class);
дает мне ошибку компилятора.
Похоже, что это проблема типа Erasure (см. this SO question). С этим двойным слоем дженериков я не уверен, что можно делать то, что я хочу делать.
Любые предложения?
UTA:
Я не могу отправить весь код, потому что это корпоративный код и я не уверен, правил размещения. Класс по существу представляет собой MultipleValueMap, который отображает один ключ в список значений. Объект класса используется для создания типизированного массива значений в списке (с использованием list.toArray(T[])
)
В этом случае я хочу иметь ключ, который сопоставляется с несколькими списками значений. И это вызывает проблему.
Это реальный код, скопированный или ошибка ввода? Отсутствует «>» после строки и до «)». –
Это зависит от того, что вы делаете с 'this.clazz'. Для чего ты это используешь? – Radiodef
Вы действительно используете этот объект clazz? –