96 votes

Test si l'objet est une instance d'un type de paramètre

Existe-t-il un moyen de déterminer si un objet est une instance d'un type générique ?

public <T> test(Object obj) {
    if (obj instanceof T) {
        ...
    }
}

C'est clair que ça ne marche pas. Existe-t-il une alternative ? Par exemple, je veux utiliser la réflexion Java pour instancier une classe et vérifier qu'elle est de type générique. T .

1voto

Ingo Points 21438

Ceci ne fonctionnera (partiellement) que si vous avez un objet de type T. Dans ce cas, vous pouvez obtenir la classe de cet objet, voir java.lang.Class<T> et trouver si c'est le même que l'objet en question.

Mais notez que cela va à l'encontre de la raison même pour laquelle nous avons des types génériques : l'utilisation d'un type générique est une façon de dire que vous ne vous souciez pas de savoir quel type il est réellement (jusqu'aux limites supérieures et inférieures qui peuvent être spécifiées).

0 votes

La classe<?> renvoyée par un appel .getClass() sur une instance T non nulle n'est pas garantie comme étant une classe<T>. Le mieux que vous puissiez garantir est qu'il s'agit d'une Class< ? extends T>.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X