web-dev-qa-db-fra.com

Initialiser le tableau dans l'argument de méthode

Dans PHP vous pouvez faire ce qui suit:

method(array("a", "b"));

Pouvez-vous en Java initialiser un tableau String comme argument dans l'appel de méthode, quelque chose comme tihs:

method(new String[] = {"a", "b"});

Merci!

25
aksamit

Java a une construction équivalente:

import Java.util.Arrays;

public class Foo {
   public void method(String[] myStrArray) {
      System.out.println(Arrays.toString(myStrArray));
   }

   public static void main(String[] args) {
      Foo foo = new Foo();
      foo.method(new String[]{"hello", "goodbye"}); // **array created inline**
   }
}

La réponse de @ Hovercraft montre comment créer un tableau en ligne en Java.

Vous pouvez encore améliorer cette solution en utilisant une méthode utilitaire (qui utilise l'inférence de type limitée de Java) pour se débarrasser de l'annotation de type tableau redondant.

Code:

import Java.util.Arrays;

// Utility class
class Array {
  public static <A> A[] of(A ... elements) {
    return elements;
  }
}

// Main class
class Main {
  public static void method(String[] s) {
    System.out.println(Arrays.toString(s));
  }

  public static void main(String[] args) {
    method(Array.of("a", "b", "c"));
  }
}
5
missingfaktor

Java a des méthodes varargs:

public void foo(String ... args){
    for(String arg : args){
        // do something
    }
}

Vous pouvez appeler une telle méthode avec zéro à n paramètres, le compilateur crée un tableau à partir des paramètres, par ex. la méthode est équivalente à cette Signature:

public void foo(String[] args)
4

Non

Mais nous avons une classe anonyme.

foo(new Runnable(){public void run(){}});
1
Jigar Joshi