Maison > Java > javaDidacticiel > Comment déterminer si un objet est un type wrapper pour les valeurs primitives en Java ?

Comment déterminer si un objet est un type wrapper pour les valeurs primitives en Java ?

DDD
Libérer: 2024-11-02 05:34:30
original
452 Les gens l'ont consulté

How to Determine if an Object is a Wrapper Type for Primitive Values in Java?

L'objet est-il primitif ?

Lorsque vous travaillez avec un tableau d'objets, il peut être nécessaire de déterminer si l'un des éléments est primitif genres. La méthode Class.isPrimitive() ne fournit pas les résultats attendus pour les objets, comme dans l'exemple :

int i = 3;
Object o = i;

System.out.println(o.getClass().getName() + ", " +
                   o.getClass().isPrimitive());
Copier après la connexion

qui affiche :

java.lang.Integer, false
Copier après la connexion

The Issue

Le problème est que les tableaux Object[] contiennent des références, pas des primitives. Par conséquent, Class.isPrimitive() renvoie toujours false pour les objets, même s'ils représentent des valeurs primitives.

Une solution

Pour déterminer si un objet est un wrapper pour un type primitif, il n’y a pas de fonction de bibliothèque intégrée. Cependant, il est possible de créer une solution personnalisée :

<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<Class<?>>();
        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>
Copier après la connexion

Cette solution utilise un HashSet pour stocker les types de wrapper. Lors de la vérification si une classe est un wrapper, l'ensemble est utilisé pour vérifier s'il contient cette classe.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal