Comment passer de tableau comme paramètre dans la méthode en java?
Code:
Object[] a={ myObject};
someMethod(Object ...arg);
quand j'essaie:
someMethod ( {myObject} );
Je recevoir le message d'erreur dans Eclipse.
mais quand:
someMethod ( a );
tout est ok.
Pourquoi cette différence?
Merci.
OriginalL'auteur user710818 | 2012-07-04
Vous devez vous connecter pour publier un commentaire.
Parce que le
{ myObject }
syntaxe est spécial sucre syntaxique qui s'applique uniquement lorsque vous êtes à l'initialisation d'une variable de tableau. C'est parce que ses propres affectation manque de type d'informations, mais dans le cas particulier de la cession, le type est entièrement déduite à partir de la variable.Dans le premier exemple, le compilateur sait que vous attribuez à
a
(qui est unObject[]
), de sorte que cette syntaxe est autorisé. Dans le second, vous n'êtes pas initialiser une variable (et en raison d'une faiblesse de Java est l'inférence de type, il n'a même pas de faire le contexte de l'affectation du paramètre). Donc il ne serait pas savoir quel type le tableau devrait être, même si elle le pouvait, sans ambiguïté, de déterminer ce que vous essayez de le faire (par opposition, par exemple de déclaration d'un bloc).Appel
si vous souhaitez définir la matrice en place sans l'aide d'une variable.
Alors que les réponses ci-dessus à votre question, comme demandé, j'ai remarqué que la méthode que vous appelez est varargs plutôt qu'explicitement nécessitant un tableau en paramètre. Donc, dans ce cas, il vous suffit d'appeler
OriginalL'auteur Andrzej Doyle
Devrait faire l'affaire!
OriginalL'auteur