Chcę wyciągnąć wartość z ResultSeta z bazy ale tak żeby gdy ta wartość jest nullem zwrócić default.
Dlaczego taki kod jest zły?
protected <T> T getValueFromResultSet(ResultSet resultSet, String valueName, T defaultValue) {
try {
Optional<T> valueOpt = switch (defaultValue.getClass()) {
case String.class -> Optional.ofNullable(resultSet.getString(valueName));
case Integer.class -> Optional.ofNullable(resultSet.getInt(valueName));
// inne typy
default -> Optional.empty();
};
return valueOpt.orElse(defaultValue);
} catch (SQLException e) {
return defaultValue;
}
}
Nie dokońca rozumiem komunikatu który dostaję w idei:
Incompatible types. Required Optional<T> but 'ofNullable' was inferred to Optional<T>:
no instance(s) of type variable(s) exist so that String conforms to T
inference variable T has incompatible bounds:
equality constraints: T
lower bounds: String
Jak można to zrobić? Albo jak można to zrobić lepiej?