Maison  >  Article  >  Java  >  Comment déterminer si un objet est de type primitif en Java ?

Comment déterminer si un objet est de type primitif en Java ?

DDD
DDDoriginal
2024-10-31 21:15:29312parcourir

How to Determine if an Object is of Primitive Type in Java?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn