caster une List<Object> en List<..>
J'ai un petit problème de casting :
Une methode de la persistance hibernate (criteria.list()) renvoi une liste d'object.
Or moi je récupère des User, mais je ne sait pas a quel moment caster ces object en User ?
En effet, je désire utiliser la boucle foreach du jdk 1.5 ainsi que les type generiques. Impossible de placer le cast quelque part sans avoir un warning :cry:
Donc nous avons la methode recuperant cette liste
Code:
1 2 3 4 5
| public List getUserList() {
Criteria criteria = session.createCriteria(User.class);
List results = criteria.list();//Tester le cast ici avec les type generic dans le return etc ... warning
return results;
} |
Et la methode qui exploite cette liste :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public void execute(JobExecutionContext arg0) throws JobExecutionException {
java.util.List <User>users = new Vector<User>() ;
try {
accessManager.startSession();
accessManager.startTransaction();
users = (java.util.List<User>) accessManager.getUserList(); //warning
for(User us : users) //Warning si cast ici egalement
us.setQuotaCour(0);
accessManager.commit();
}
catch (IllegalArgumentException e) {
e.printStackTrace(); //Avertir du pb le fichier ne peut être supprimé
}
catch (Exception e) {
e.printStackTrace();
}
finally {
accessManager.closeSession(); //Quoi qu'il arrive, on clos la session
}
} |
Le warning :
Code:
Type safety : the cast from List to List<User> is actually checking against the erased type List
Ais-je loupé quelque chose ?