Cela signifie qu'il peut s'agir d'une classe de tout type. ? est un joker désignant l'ensemble de tous les types, ou 'any'. Ainsi, vous pouvez faire plus tard
Integer normalForm = new Integer();
normalFormClass = normalForm.getClass();
ou
String normalForm = new String();
normalFormClass = normalForm.getClass();
Si vous n'êtes pas au courant des génériques sur Java, lisez http://java.sun.com/developer/technicalArticles/J2SE/generics/
Quant au pourquoi, je pense qu'il pourrait être d'exprimer strictement que vous êtes en utilisant des génériques partout et votre code n'est pas compatible avec les versions plus anciennes de Java, ou peut-être pour fermer certains IDE de déclenchement. Et oui,
Class foo
et
Class<?> foo
sont équivalentes.
excellent exemple! J'apprends toujours les bases de Java et je me suis toujours posé des questions sur les lignes de code avec ces parenthèses. –
Merci Oui ... Je suis au courant des génériques mais le? wildcard était la chose que je voulais m'assurer de bien comprendre. –
Sauf que vous ne pouvez pas créer une nouvelle classe comme ça;) Peut-être normalFormClass = obj.getClass(); – erickson