클래스를 가져 와서 기본 유형을 나타내는 지 확인할 수있는 방법이 있습니까? (모든 기본 유형을 구체적으로 열거하지 않아도되는 솔루션이 있습니까?)Java 클래스가 기본 유형인지 일반적인 방법으로 어떻게 알 수 있습니까?
참고 : this question을 보았습니다. 기본적으로 그 반대입니다. 나는 수업을 가지고 있는데, 그것이 원시인지 알고 싶다.
클래스를 가져 와서 기본 유형을 나타내는 지 확인할 수있는 방법이 있습니까? (모든 기본 유형을 구체적으로 열거하지 않아도되는 솔루션이 있습니까?)Java 클래스가 기본 유형인지 일반적인 방법으로 어떻게 알 수 있습니까?
참고 : this question을 보았습니다. 기본적으로 그 반대입니다. 나는 수업을 가지고 있는데, 그것이 원시인지 알고 싶다.
클래스 개체에 대한 메서드가 isPrimitive입니다.
Class.isPrimitive()이 답변을 알려줍니다.
이 방법은 또한뿐만 아니라 원시 형의 래퍼 여부를 확인합니다 :
/**
* 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;
}
모든 숫자 부속 유형과 동일성을 검사하는 대신 Number.class.isAssignableFrom (c)를 사용하십시오. –
@digitalillusion 'BigInteger'와 같은 비 래퍼 유형도 포함합니다. 이는 'Number'도 마찬가지입니다. – Kapep
'return c.isPrimitive() | | c.getSuperclass() == Number.class || c == Boolean.class || c == Character.class;'는 쉬운 해결책입니다. –
아, 나는 그것을 보지 않았다. 감사. – nathan