29 votes

Initialisation du tableau de chaînes comme paramètre constructeur

En Java, il est tout à fait légal d'initialiser un tableau String de la manière suivante:

 String[] s = {"FOO", "BAR"};
 

Cependant, lorsque vous essayez d'instancier une classe qui prend un tableau de chaînes comme paramètre, le morceau de code suivant n'est PAS autorisé:

 Test t = new Test({"test"});
 

Mais cela fonctionne à nouveau:

 Test t = new Test(new String[] {"test"});
 

Quelqu'un peut-il expliquer pourquoi c'est?

45voto

Jigar Joshi Points 116533
 String[] s = {"FOO", "BAR"};  
 

ceci est autorisé au moment de la déclaration uniquement

Tu ne peux pas

 String[] s;
s={"FOO", "BAR"};  
 

5voto

Karl Knechtel Points 24349

Parce que Type[] x = { ... } est une syntaxe d' initialisation pour les tableaux. Le { ... } est interprété d'une manière spécifique uniquement dans ce contexte spécifique.

3voto

Peter Lawrey Points 229686

Pour vous voulez un moyen simple de passer un tableau String, je vous suggère d'utiliser des varargs

 class Test {
   public Test(String...args);
}

// same as new Test(new String[] { "test", "one" })
Test t = new Test("test", "one"); 
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X