Java: comment puis-je obtenir une classe littérale à partir d'un type générique?

Généralement, j'ai vu des gens utiliser la classe littéral comme ceci:

Class<Foo> cls = Foo.class;

Mais que faire si le type est générique, par exemple la Liste? Cela fonctionne bien, mais a un avertissement depuis Liste doit être paramétré:

Class<List> cls = List.class

Alors pourquoi ne pas ajouter un <?>? Eh bien, cela provoque une erreur d'incompatibilité de type:

Class<List<?>> cls = List.class

J'ai pensé à quelque chose comme ça pourrait fonctionner, mais c'est juste une plaine ol' erreur de syntaxe:

Class<List<Foo>> cls = List<Foo>.class

Comment puis-je obtenir un Class<List<Foo>> statiquement, par exemple, à l'aide de la classe littérale?

Je pourrait utilisation @SuppressWarnings("unchecked") pour se débarrasser des alertes causées par la non-paramétré utilisation de la Liste dans le premier exemple, Class<List> cls = List.class, mais je préfère ne pas.

Des suggestions?

InformationsquelleAutor Tom | 2010-03-05