Я хочу, чтобы общий класс "Class<T>" с "переменной класса"

Я хочу получить переменную типа универсального класса для JsonDeserialize.

Class Data<T> {
  private T data;
}

Class DataType {
  private String dummy;
}


Class dataTypeClass = DataType.class;


// I want get this.
Class dataClass = Data<dataTypeClass>.class;


Пробовал вот так, не работает.

Могу ли я получить Data.class ??

Возможный дубликат Получить общий тип класса во время выполнения

Kartik 29.05.2019 09:13

Какую библиотеку вы используете? Джексон?

Lino 29.05.2019 09:14

@ Лино, да. Я использовал Джексион

LKC 29.05.2019 09:17

Это интересно. Я мог бы решить проблему хакерским способом, которым я бы не стал делиться с кем-то, кто этого не понимает, но я не смог найти ничего, где Джексон помог бы с этим.

kumesana 29.05.2019 10:58
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы используете Jackson в качестве своей библиотеки. Вы можете просто использовать TypeReference:

TypeReference<Data<DataType>> r = new TypeReference<Data<DataType>>() {};
...
Data<DataType> data = objectMapper.readValue(json, r);

Этот код создаст новый анонимный подкласс TypeReference, параметризованный <Data<DataType>>. Этот класс внутренне использует «хакерский обход», чтобы получить общий параметр, который затем подбирается Джексоном для десериализации вашего JSON.

Могу ли я получить TypeReference от Class variable ??

LKC 29.05.2019 09:26

@LKC, тогда вы можете просто вызвать objectMapper.readValue(json, variable), если у вас уже есть Class

Lino 29.05.2019 09:29

Другие вопросы по теме