2008-10-16 15 views

Respuesta

23

Hay un método en el objeto Class, isPrimitive.

+0

Ah, yo no vi eso. Gracias. – nathan

1

Este método también comprobará si se trata de un envoltorio de un tipo primitivo, así:

/** 
* 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

Use Number.class.isAssignableFrom (c) en lugar de verificar la igualdad con todos los subtipos de números –

+0

@digitalillusion. Eso también incluiría tipos sin envoltorio como 'BigInteger', que también es' Number' – Kapep

+0

'return c.isPrimitive() | | c.getSuperclass() == Number.class || c == Boolean.class || c == Character.class; 'es una solución más fácil –

Cuestiones relacionadas