Java: Comment faire pour vérifier si un Champ est de type java.util.Collection
J'ai une méthode utilitaire qui va par le biais de différentes classes et de manière récursive récupère les champs. Je veux vérifier si ce champ est une Collection.
Voici un exemple de code:
void myMethod(Class<?> classToCheck)
Field[] fields = classToCheck.getDeclaredFields();
for(Field field:fields)
{
//check if field if a Collection<?>
}
Merci d'avance pour l'aide.
- Voulez-vous tester si le type déclaré de la domaine est une mise en œuvre de la Collecte, ou si l'objet référencé par le champ dans un objet donné implémente Collection? Les deux résultats pourraient être différents si: a) le Terrain a été déclaré comme Objet, mais un objet de la mise en œuvre de la Collecte a été confiée, ou b) le Terrain a été déclaré que la Collecte (ou un descendant), mais il était nul.
- double possible de Howto savoir si un champ est instanceof un type via la réflexion?
Vous devez vous connecter pour publier un commentaire.
Class<?>
. De vérifier la javadocVous devez utiliser
Class.isAssignableFrom
:Class
À l'aide de la
getType()
méthode//Cette exécution si
//Ceci exécute d'autre
Vous pouvez utiliser
getType()
de la manière suivante:Cela ne fonctionne que si le champ est déclaré comme un
Collection
. Il ne fonctionnera pas si le champ est un sous-type de Collecte, commeList
ouVector
.Ce teste si l'objet référencé par le champ "champ" (de l'objet classInstance) met en œuvre la Collecte. Si vous voulez tester si le type déclaré de Champ met en œuvre la Collecte, alors ce sera être différent.
null
?