2009-09-29 9 views
3

Le code suivantClasse de paramètre variable?

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

donne la sortie: -

class [Ljava.lang.Object; 

Quelle classe est-ce?

Répondre

7

Un tableau Object[].

Pour obtenir les informations de type d'exécution:

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

selon the JVM specifications il est tout simplement un tableau de java.lang.Object:

  • [ signifie un tableau monodimensionnel
  • LfullyQualifiedName; signifie une classe, L; est juste la syntaxe
+0

L est juste la syntaxe? sans aucun sens? .. étrange .. – Ajay

+0

il est utilisé uniquement comme délimiteur, pas de signification particulière; avez-vous lu les spécifications? – dfa

1

C'est ainsi que varargs (méthodes avec un nombre variable d'arguments) fonctionnent en Java - l'argument varargs ressemblera à un tableau dans la méthode.

Questions connexes