Bonjour,
J'ai des avertissements Java sur une fonction statique un peu complexe niveau généricité.
La classe sert à valider des "entités" Hibernate grâce à la classe ClassValidator<Entity>(Entity.class) (qui doit être instanciée pour chaque entité). Or, pour ne pas avoir à créer le ClassValidator à chaque fois, je gère un cache.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 public final class DomainValidator { /** Validators cache (for each Entity class name) */ private static final Map<String, ClassValidator<? extends AbstractEntity>> VALIDATORS = new TreeMap<String, ClassValidator<? extends AbstractEntity>>(); /** Get the Entity validator in the cache, or create it if it does not already exist */ private static <Entity extends AbstractEntity> ClassValidator<Entity> getValidator(Entity entity) { Class<Entity> clazz = (Class<Entity>) entity.getClass(); // Avertissement 1 String className = clazz.getName(); ClassValidator<Entity> validator = null; synchronized (VALIDATORS) { validator = (ClassValidator<Entity>) VALIDATORS.get(className); // Avertissement 2 if (validator == null) { validator = new ClassValidator<Entity>(clazz); VALIDATORS.put(className, validator); } } return validator; } /** Validate an Entity */ public static <Entity extends AbstractEntity> Collection<InvalidValue> validate(Entity entity, String... properties) { // ... } private DomainValidator() { // } }
- Avertissement 1 : Type safety: Unchecked cast from Class<capture#1-of ? extends AbstractEntity> to Class<Entity>
- Avertissement 2 : Type safety: Unchecked cast from ClassValidator<capture#2-of ? extends AbstractEntity> to ClassValidator<Entity>
Comment ce code peut-il être amélioré ?
Merci.
Partager