Prenez la méthode suivante, qui renvoie juste une carte de champs par nom:Comment éviter ces médicaments génériques java avertissement
public static <T> HashMap< String, Field > getFields(Class<T> klass) {
HashMap< String, Field > fields = new HashMap< String, Field >();
for (Field f : klass.getFields()) {
fields.put(f.getName(), f);
}
return fields;
}
La méthode se comporte de manière identique si vous supprimez la saisie générique dans la signature de la méthode, à l'exception que vous obtenir un avertissement pour l'utilisation d'un type brut. J'ai rencontré d'autres choses similaires, surtout autour de la réflexion, où vous n'avez pas nécessairement le type d'entrée. Il semble que la réflexion va naturellement avoir des problèmes avec les génériques, étant donné que la réflexion est construite pour vous permettre de travailler avec des objets lorsque vous ne savez pas (ou ne vous intéressez pas) au type. En plus de simplement coller un "@SuppressWarning" sur tout, quelqu'un a-t-il de bonnes idées sur une manière plus élégante de gérer la réflexion sans être constamment grondé par les génériques?
J'ai dû faire face à cela avant, mais ne me souviens pas du haut de ma tête, voici un bon tutoriel sur les génériques de Sun. http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf Si personne d'autre ne répond au moment où je rentre à la maison, je vais ouvrir mon ancien livre CS2 et essayer d'aider. Ça fait longtemps que j'ai vraiment fait des génériques Java. – Aaron
Fait intéressant, le compilateur Eclipse est totalement bien avec votre code - aucun avertissement du tout. Ce n'est pas la première fois que javac et Eclipse ne sont pas d'accord sur les génériques ... – netzwerg
Vous pouvez avoir des avertissements d'éclipse éteints. Je reçois un avertissement "type brut" en éclipse. –