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
DDDoriginal
2024-11-02 05:34:30428parcourir

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());

qui affiche :

java.lang.Integer, false

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>

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!

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