J'essaye d'implémenter l'interface de RowMapper de Spring, cependant, mon EDI m'indique de lancer l'objet de retour à "T" et je ne comprends pas pourquoi. Quelqu'un peut-il expliquer ce que je manque?Implémentation de l'interface avec le type générique
public class UserMapper<T> implements RowMapper<T> {
public T mapRow(ResultSet rs, int row) throws SQLException {
User user = new User();
user.firstName(rs.getInt("fname"));
user.lastName(rs.getFloat("lname"));
return user; // Why am I being prompted to cast this to "T", should this be fine?
}
}
Comment le compilateur est censé savoir que 'T' représente' User'? Peut-être que vous voulez implémenter l'interface comme 'implémente RowMapper' à la place? –
Je pensais que le compilateur saurait à partir de l'instanciation de la classe, c'est-à-dire: new UserMapper(); –
MarkPenn
Mais quand vous dites que la classe est 'UserMapper', vous dites que n'importe quel type peut être spécifié pour une nouvelle instance. Par exemple, 'new UserMapper ()'. Pourtant, la classe ne retournera jamais un utilisateur! –
ColinD