2009-09-29 6 views
3

다음 코드는가변 매개 변수 클래스?

 public static void main(String[] args) { 
     fun(new Integer(1)); 
    } 
    static void fun(Object ... a) { 
     System.out.println(a.getClass()); 
    } 

출력을 제공합니다. -

class [Ljava.lang.Object; 

어떤 클래스입니까?

답변

7

Object[] 어레이.

a.getClass().isArray() -> true 
a.getClass().getComponentType().getName() -> java.lang.Object 
6

the JVM specifications에있어서 그것이 java.lang.Object 상위의 단순히 배열 :

런타임 타입 정보를 얻으려면

  • 는 [가 monodimensional 배열 수단
  • LfullyQualifiedName;은 클래스 L을 의미합니다. 그냥 구문 일뿐입니다.
+0

L은 구문입니다. 어떤 의미도없이 ... 이상한 .. – Ajay

+0

그것은 구분 기호로만 사용되며 특별한 의미는 없습니다. 사양을 읽었습니까? – dfa

1

이것은 가변 인수 개수가있는 메소드 인 varargs이 Java에서 작동하는 방식입니다. varargs 인수는 메소드 내부의 배열처럼 보입니다.

관련 문제