次のコードでは:
_return new HashSet<>(namedParameterJdbcTemplate.query(
SOME_SQL_QUERY_STRING,
parametersMap,
(resultSet, rowNum) -> resultSet.getBigDecimal("GETID")
));
_
_(resultSet, rowNum) -> resultSet.getBigDecimal("GETID"))
_の下に赤い線が表示され、次のエラーが発生します:No instance(s) of type variable(s) T exist so that List<T> conforms to Integer
。誰かが私を助けて、なぜこれが起こっているのか教えてもらえますか?
基本的な問題は、「クエリ」メソッドの別の(不要な)オーバーロードされたバージョンが(コードに基づいて)推論され、第3パラメータとして指定されたラムダ(関数)がこのバージョンの「クエリ」に適切でないことです。
これを修正する方法は、次のようなtypeパラメーターを提供することで、必要なクエリ関数を「強制」することです。
return new HashSet<>(namedParameterJdbcTemplate.<BigDecimal>query( ...
メソッド呼び出しに明示的なキャストを追加します
私の場合、私は持っています
<T> Map<String, T> getMap(@NotNull String rootPath, @NotNull Class<T> type)
そして私はそれを次のように使用しました
LinkedHashMap<String,String> x = xmlRegestryFile.getMap("path/to/map/of/string", String.class)
しかし、失敗してそのエラーが出たので、キャストを追加してこのエラーを克服しました
x = (LinkedHashMap<String, String>) xmlRegestryFile.getMap("my/path", String.class)