2009-09-29 85 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中的:

  • [指單維陣列
  • LfullyQualifiedName;表示一個類,L;只是語法
+0

L只是語法?沒有任何意義?..怪異的.. – Ajay 2009-09-29 10:22:42

+0

它僅用作分隔符,沒有特別的意義;你讀過規格書嗎? – dfa 2009-09-29 10:37:03

1

這是如何在Java中工作的varargs(方法的參數數量) - varargs參數看起來像方法內的數組。