Vérifiez si un objet est une instance de Liste du nom de classe donné
Donné un Object o
et un String className = "org.foo.Foo"
je veux vérifier si o
est instance de List<className>
J'ai essayé ceci mais ne compile pas:
Class<?> cls = Class.forName(className);
if (o instanceof List<cls>){ //this gives error: cls cannot be resolved to a type
doSomething();
}
Veuillez noter que mes entrées sont Object o
et String className
(veuillez garder à l'esprit les types).
source d'informationauteur lviggiani
Vous devez vous connecter pour publier un commentaire.
Je pense que vous pouvez le faire en deux étapes:
Tout d'abord, vous cochez c'est une Liste de.
Ensuite, vous vérifier que l'on (?) membre de la liste a un type donné.
C'est à cause de Type D'Effacement. La déclaration
sera exécutée au moment de l'exécution, lorsque le type générique de la liste seront effacées. Par conséquent, il n'y a pas de point de vérification pour
instanceof
générique.Ok, j'ai trouvé une méthode... c'est un peu sale code mais ça marche:
Solution que j'ai utilisé dans mon projet.
Note> il suffit de changer de
public static boolean checkType(Object o)
et puisreturn true
dans chaquecase
ce n'est pas par défaut.si ce que vous voulez faire, c'est comme cela:
vous pouvez essayer d'utiliser un modèle comme: