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
Donc nous avons la methode recuperant cette liste
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 :
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 :
Type safety : the cast from List to List<User> is actually checking against the erased type List
Ais-je loupé quelque chose ?
Partager