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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-31 20:27:29984parcourir

How to Determine if an Object Wraps a Primitive Type in Java?

Déterminer si un objet est primitif : utilisation de la détection de type de wrapper

En Java, un objet peut envelopper des valeurs primitives via l'auto-boxing. Pour différencier les vrais types primitifs des primitives encadrées, une approche spécifique est nécessaire.

Vérification des types primitifs à l'aide de Class.isPrimitive()

Le Class.isPrimitive() La méthode ne convient pas à cet effet. Les types primitifs sont représentés sous forme de références à leurs classes wrapper (par exemple, un objet Integer pour int).

Méthode alternative : identification des types wrapper

La solution consiste à déterminer si un le type de l'objet est un wrapper pour un type primitif. Bien que les bibliothèques Java manquent de fonctionnalités intégrées pour cela, elles peuvent être facilement implémentées :

<code class="java">import java.util.*;

public class Test {
    public static void main(String[] args) {
        System.out.println(isWrapperType(String.class)); // false
        System.out.println(isWrapperType(Integer.class)); // true
    }

    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);
        ret.add(Byte.class);
        ret.add(Short.class);
        ret.add(Integer.class);
        ret.add(Long.class);
        ret.add(Float.class);
        ret.add(Double.class);
        ret.add(Void.class);
        return ret;
    }
}</code>

Utilisation : La méthode fournie isWrapperType prend un objet Class comme argument et renvoie true s'il est un wrapper pour un type primitif, et false sinon.

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