2009-09-29 82 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参数看起来像方法内的数组。