Déterminer si un objet est de type primitif
Lorsque vous travaillez avec des tableaux d'objets, il peut être nécessaire de déterminer quels objets sont de types primitifs . En essayant d'utiliser la méthode Class.isPrimitive(), certains utilisateurs peuvent rencontrer de faux résultats en raison de l'auto-boxing.
Comprendre l'auto-boxing
L'auto-boxing est une fonctionnalité de Java qui convertit automatiquement les valeurs primitives en classes wrapper correspondantes lorsqu'elles sont utilisées comme objets. Par exemple, l'int primitif est automatiquement converti en sa classe wrapper, Integer.
Approche correcte
Pour déterminer avec précision si un objet est de type primitif, il est nécessaire pour vérifier si son type est un "wrapper pour primitive" au lieu d'utiliser Class.isPrimitive(). Ceci peut être réalisé en comparant la classe de l'objet avec un ensemble de classes wrapper connues.
Personnalisation pour des types spécifiques
L'extrait de code suivant inclut une méthode utilitaire, isWrapperType, qui peut être utilisé pour déterminer si le type d'un objet est un type wrapper. Il compare la classe de l'objet à un ensemble prédéfini de classes wrapper et renvoie un résultat booléen.
<code class="java">import java.util.*; public class Test { public static void main(String[] args) { System.out.println(isWrapperType(String.class)); System.out.println(isWrapperType(Integer.class)); } private static final Set<Class<?>> WRAPPER_TYPES = getWrapperTypes(); public static boolean isWrapperType(Class<?> clazz) { return WRAPPER_TYPES.contains(clazz); } private static Set<Class<?>> getWrapperTypes() { Set<Class<?>> ret = new HashSet<>(); ret.add(Boolean.class); ret.add(Character.class); ... return ret; } }</code>
Conclusion
En utilisant cette approche personnalisée, les développeurs peuvent déterminer avec précision si un objet dans un tableau Object[] est d'un type primitif, en tenant compte des effets de l'auto-boxing.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!