Как я могу получить тип возвращаемого значения лямбда-метода в Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как я могу получить тип возвращаемого значения лямбда-метода в Java?

Сообщение Anonymous »

Я пытаюсь получить класс универсального типа в своем Java-коде. Я использую FastJSON от Alibaba для обработки JSON. Ниже приведены ключевые части моего кода:
Вызывающий:

Код: Выделить всё

public Features findFeatureById(BigDecimal id) {
return mixedCacheService.get(FEATURE, id.toString(), new MixedCacheService.Func(() -> featuresDao.selectById(id)));
}
Вызываемый:

Код: Выделить всё

public  T get(@NotNull CacheBaseConstants cacheBaseConstants, @NotNull String key, @NotNull Supplier getter) {
String value = get(cacheBaseConstants, key);
if ("".equals(value)) {
return null;
}
// How can I get T.class here?
return Optional.ofNullable(value)
.map(o -> JSON.parseObject(value, T.class))
.orElseGet(() -> put(cacheBaseConstants, key, getter));
}
Я попытался расширить com.alibaba.fastjson.TypeReference:

Код: Выделить всё

public static class Func extends TypeReference {
private Supplier supplier;

public Func(Supplier supplier) {
super();
this.supplier = supplier;
}

public T get() {
return supplier.get();
}
}
Я также пытался использовать getter.supplier.getClass().getGenericSuperclass(), но он вернул объект.
Я хотел бы знать, как успешно получить класс для . Будем очень признательны за любые идеи и предложения!


Подробнее здесь: https://stackoverflow.com/questions/790 ... od-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»