Je veux utiliser l'injection intégrée de littéraux de type Guice car j'ai besoin d'injecter des informations de classe. Voir un exemple ci-dessous:Guice: Pourquoi TypeLiteral <T> La méthode getRawType() renvoie la classe <? super T> au lieu de la classe <T>?
public class Foo<T> {
private Class<T> clazz;
@Inject
public Foo(TypeLiteral<T> literal) {
this.clazz = literal.getRawType();
}
}
Il aurait parfaitement fonctionné, mais getRawType()
méthode renvoie Class<? super T>
. La variable interne clazz
est utilisée comme argument de la méthode d'une autre classe. Si je modifie le type clazz
pour être Class<? super T>
, je devrais retravailler un tas de classes.
Quelle est la solution la plus élégante ici?
Ouais, je sais que je peux le lancer, à quel point c'est sécuritaire? Et pourquoi cette méthode ne renvoie pas la classe à la place? –
@IhorM. mis à jour la réponse, idéalement, cela devrait être une copie du lien partagé. voter pour cela – nullpointer