Integer 또는 Long과 같은 클래스가 연관된 기본 유형을 가지고 있는지 여부를 쉽게 감지 할 수 있습니까? (예 : 각각 int와 long)클래스에 연관된 기본 유형이 있는지 확인
쉽게 클래스의 컬렉션을 유지 관리하고 해당 클래스가 컬렉션에 있는지 확인하는 것과 같은 것을 의미하지는 않습니다.
는Integer 또는 Long과 같은 클래스가 연관된 기본 유형을 가지고 있는지 여부를 쉽게 감지 할 수 있습니까? (예 : 각각 int와 long)클래스에 연관된 기본 유형이 있는지 확인
쉽게 클래스의 컬렉션을 유지 관리하고 해당 클래스가 컬렉션에 있는지 확인하는 것과 같은 것을 의미하지는 않습니다.
는쉽게 클래스 컬렉션을 유지 관리하고 해당 클래스가 컬렉션에 있는지 확인하는 것과 같은 것을 의미하지는 않습니다.
하지만 쉽습니다. Java는 기본 유형이 고정되어 있으며 (모두 기억해 보면 7 개입니다.) 각각 정확히 하나의 클래스에 해당합니다. 7 원소의 배열로 멤버쉽을 확인하는 것은 매우 빠르고 쉽습니다. Set
에 넣고 O (1) 시간의 멤버쉽을 확인하는 데 사용할 수 있습니다. 나는 어떤 방법으로 더 빨리 될지 확실하지 않다.
Java에 내장 API (표준 API)가 있는지 여부를 묻는다면 그렇게 생각하지 않습니다. 그러나 만약 하나가 있다면, 아마도 그 요소 나 배열의 멤버쉽을 체크 할 것입니다.
나는 다른 방법이 있다고 생각하지 않았다. 그리고 네, 저는 컬렉션을 유지하는 것이 쉽다는 것을 알고 있습니다. 그러나 저는이 세트를 유지 관리하는 사전 정의 된 클래스가 있는지 궁금합니다. 더 깨끗한 코드를 만듭니다. 하지만 내가 없다면 나는 내 자신의 컬렉션을 유지할 것입니다. 감사. – digiarnie
은 예, 쉽게 방법이 : 다음
public class ClassUtils {
private static final Set<Class<?>> wrapperClasses = new HashSet<Class<?>>();
static {
wrapperClasses.add(Integer.class);
... there are a set number of wrapper classes - add them all here
}
, 도우미 메서드를 만듭니다
public static boolean isWrapperForPrimitive(Class<?> klass) {
return wrapperClasses.contains(klass);
}
}
역은 Class.isPrimitive() 매우 간단합니다 :
지정된 Class 객체가 프리미티브 유형을 나타내는 지 여부를 판별합니다.
8 개의 기본 유형과 void를 나타내는 9 개의 미리 정의 된 Class 객체가 있습니다. 이것들은 Java 가상 머신에 의해 작성되어 boolean, byte, char, short, int, long, float, 및 double 등이 나타내는 원시적 형과 같은 이름을가집니다.
이러한 개체는 다음 정적 static final 변수를 통해서만 액세스 할 수 있으며이 메서드가 true를 반환하는 유일한 Class 개체입니다.
그건 그가 원하지 않는 방식입니다 : p – hhafez
이 질문을 살펴 보시기 바랍니다 .http : //stackoverflow.com/questions/709961/determining-if-an-object-is-of-primitive-type –