2009-04-23 2 views

답변

22

방법 :

if (theObject instanceof int[]) { 
    // use it! 
} 

배열들은 프리미티브의 배열 경우에도, Objects 있습니다.

+1

예프. 그렇게하는 방법입니다. 나는 내 대답보다 더 좋은 방법이 있다는 것을 알았다. – MBCook

0

클래스 이름이 다음과 같은 단일 차원 배열 인 경우 변수의 런타임 클래스를 가져옵니다. [int 2 차원 배열 인 경우 클래스 이름은 [[int이고 3 차원 클래스 이름이 [[[

if (j.class.Name.equals("[int")) { 
    ...... 
} 
+0

Reflection도 작동하지만 질문에서 다차원 배열에 대해서는 언급하지 않았습니다. –

+0

j.getClass(). getName()이어야하며 j.class.Name이 아니어야합니다. –

+0

j.class는 Java 6에서도 작동 할 것이고, 그렇지 않다면 요점은 잘 전달됩니다. 그러나 classof 메서드 호출을 사용하지 않고 컴파일 타임에 추론했다고 생각하기 때문에 instanceof가 더 좋을 것입니다. 그러나 다른 명제를 제공하기 위해 이것을 추가하고 있습니다. –

1
if (o instanceof int[]) 
{ 
... 
} 

배열은 자바 객체 int로.

0

intanceof는 가장 간단하지만 물어 보는 것은 무엇이든 할 수 있습니다.

if (o.getClass() == int[].class) 
+2

중요 : instanceof는 o가 null 인 경우 NullPointerException을 throw하지 않지만이 경우 NullPointerException을 throw하지 않습니다. – Kip

관련 문제