2008-10-16 5 views

답변

23

클래스 개체에 대한 메서드가 isPrimitive입니다.

+0

아, 나는 그것을 보지 않았다. 감사. – nathan

1

이 방법은 또한뿐만 아니라 원시 형의 래퍼 여부를 확인합니다 :

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

모든 숫자 부속 유형과 동일성을 검사하는 대신 Number.class.isAssignableFrom (c)를 사용하십시오. –

+0

@digitalillusion 'BigInteger'와 같은 비 래퍼 유형도 포함합니다. 이는 'Number'도 마찬가지입니다. – Kapep

+0

'return c.isPrimitive() | | c.getSuperclass() == Number.class || c == Boolean.class || c == Character.class;'는 쉬운 해결책입니다. –

관련 문제