web-dev-qa-db-fra.com

Aucune instance de type variable (s) T n'existe pour que List <T> soit conforme à Integer

Dans le code suivant:

return new HashSet<>(namedParameterJdbcTemplate.query(
    SOME_SQL_QUERY_STRING,
    parametersMap,
    (resultSet, rowNum) -> resultSet.getBigDecimal("GETID")
));

Je reçois une ligne rouge sous (resultSet, rowNum) -> resultSet.getBigDecimal("GETID")) et l'erreur suivante: No instance(s) of type variable(s) T exist so that List<T> conforms to Integer. Quelqu'un peut-il m'aider s'il vous plaît et dire pourquoi cela se produit?

6
cnova

Le problème fondamental est qu’une version surchargée (non désirée) de la méthode "query" est déduite (en fonction du code) et que le lambda (Fonction) donné en troisième paramètre n’est pas approprié pour cette version de "query".

Un moyen de résoudre ce problème consiste à "forcer" la fonction de requête souhaitée en fournissant le paramètre type en tant que tel:

return new HashSet<>(namedParameterJdbcTemplate.<BigDecimal>query( ...
3
Ovidiu Dolha

ajouter un casting explicite à votre appel de méthode

dans mon cas j'ai 

<T> Map<String, T> getMap(@NotNull String rootPath, @NotNull Class<T> type)

et je l'ai utilisé comme

LinkedHashMap<String,String> x = xmlRegestryFile.getMap("path/to/map/of/string", String.class)

mais il a échoué et m'a donné cette erreur, alors j'ai surmonté cette erreur en ajoutant casting

x = (LinkedHashMap<String, String>) xmlRegestryFile.getMap("my/path", String.class)
0
Basheer AL-MOMANI