2010-12-14 48 views
29

En Java, il est tout à fait légal pour initialiser un tableau de chaînes de la manière suivante:initialisation de tableau chaîne en tant que paramètre constructeur

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

Cependant, lorsque vous essayez d'instancier une classe qui prend un tableau de chaîne en tant que paramètre, le morceau de code suivant est INTERDIT:

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

Mais cela fonctionne à nouveau:

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

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

Répondre

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

cela est autorisé au moment de la déclaration que

Vous ne pouvez pas

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

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

3

Pour vous voulez un moyen simple de passer un tableau de chaînes, je vous suggère d'utiliser VarArgs

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

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

Merci, mais cela n'a pas vraiment la question et vous assumez aussi que nous pouvons modifier le constructeur. –

+1

@Herminator Habituellement vous pouvez, mais pas toujours. La prochaine fois que vous le pouvez, vous saurez ce que vous pouvez faire. –