Maison >Java >javaDidacticiel >Comment déterminer si un objet est un type wrapper pour les valeurs primitives en 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!