2008-10-16 9 views
13

Existe-t-il un moyen de prendre une classe et de déterminer si elle représente un type primitif (existe-t-il une solution qui n'exige pas spécifiquement l'énumération de tous les types primitifs)?Comment savoir si une classe Java est un type primitif?

REMARQUE: J'ai vu this question. Je demande essentiellement le contraire. J'ai la classe, je veux savoir si c'est un primitif.

Répondre

23

Il existe une méthode sur l'objet Class, isPrimitive.

+0

Ah, je ne l'ai pas vu cela. Merci. – nathan

1

Cette méthode vérifiera également que ce soit une enveloppe d'un type primitif ainsi:

/** 
* Checks first whether it is primitive and then whether it's wrapper is a primitive wrapper. Returns true 
* if either is true 
* 
* @param c 
* @return whether it's a primitive type itself or it's a wrapper for a primitive type 
*/ 
public static boolean isPrimitive(Class c) { 
    if (c.isPrimitive()) { 
    return true; 
    } else if (c == Byte.class 
      || c == Short.class 
      || c == Integer.class 
      || c == Long.class 
      || c == Float.class 
      || c == Double.class 
      || c == Boolean.class 
      || c == Character.class) { 
    return true; 
    } else { 
    return false; 
    } 
+0

Utiliser Number.class.isAssignableFrom (c) au lieu de vérifier l'égalité avec tous les sous-types Number –

+0

@digitalillusion Cela inclurait également les types non-wrapper comme 'BigInteger', qui est aussi' Number' – Kapep

+0

'return c.isPrimitive() | | c.getSuperclass() == Number.class || c == Boolean.class || c == Character.class; 'est une solution plus facile –

Questions connexes