Java multiples de longueur variable en argument
Je n'ai pas vu la chose en particulier avant aujourd'hui, lorsque l'on travaille sur de longueur variable argument
Pour, par exemple, Il y a une méthode nommée instruction préparée avec de la déclaration, tels que
1.
String prepareStatement(String... columnNames,String... values)
//String... columnNames(Eclipse shows error saying The variable argument type String of the method prepareStatement must be the last parameter)
2. Une autre méthode de déclaration
String prepareStatement(int i,String... columnNames,String... values)
//still the same result as above(The variable ...... parameter)
Pourquoi java ne pas permettre à plusieurs de longueur variable en argument?? Est-il d'autre moyen d'obtenir de la sorte?
P. S: La raison en est mon exigence est de générer généralisée de l'instruction préparée pour le paramètre passé, depuis tout ce paramètre sera transmis via les propriétés
- Check this out: stackoverflow.com/questions/2161912/...
Vous devez vous connecter pour publier un commentaire.
Seul le dernier Paramètre est autorisé à être de Longueur variable:
Chaîne... est égal à String[] dans ce cas, vous pouvez insérer une Chaîne de caractères[] pour le premier paramètre, et il suffit de vérifier si son vide ou combien de temps il est.
Modifier à votre Edition
Si vous avez vraiment besoin d'une entrée pour tous vos Chaînes en tant que Paramètres, je vous recommande de le définir vraiment rare de Chaîne pour séparer les entrées:
Vous pouvez l'appeler:
De sortie:
Une autre façon est de donner la longueur de la columnNames comme paramètre:
Avec l'appel:
Et le même résultat:
Je crois qu'avec cette déclaration :
Si vous appelez la méthode que
Il n'y a aucun moyen de résoudre
"x"
et"y"
appartenir à l'argument.Il stipule qu'il doit y avoir un seul varlength argument, car si il y a plus, il peut ne pas être en mesure de les distinguer.
Regardons le premier exemple avec une entrée:
et de l'appeler avec:
Alors que peut-être il serait logique que les arguments pour être réparti de manière égale, qui ne peut pas être assumée par le compilateur car il ne sait pas de vos intentions d'avoir divisé par le milieu. Afin de sauver lui-même à partir d'un désordre de l'inférence de type et collant bord des cas, il ne permet pas ceci même pour les différents types.
Comment JVM comprendre quand
String... columnNames
se termine et commenceString... values
si vous l'utilisez comme ceci:Si vous n'êtes pas très particulier au sujet de l'aide de la chaîne en tant que les paramètres seront plus faciles à prendre HashMap en tant que paramètre. Pas besoin de l'analyse et peut prendre n'importe quel nombre de paramètres.