it-swarm-eu.dev

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?

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

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

Tu ne peux pas

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

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

5
Karl Knechtel

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"); 
3
Peter Lawrey