Подтвердить что ты не робот

Инициализировать массив в аргументе метода

В PHP вы можете сделать следующее:

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

Можете ли вы в Java инициализировать массив String в качестве аргумента в вызове метода, что-то вроде tihs:

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

Спасибо!

4b9b3361

Ответ 1

Java имеет эквивалентную конструкцию:

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**
   }
}

Ответ 2

@Hovercraft ответ показывает, как создать массив inline в Java.

Вы можете улучшить это решение, используя метод утилиты (тот, который использует вывод ограниченного типа Java), чтобы избавиться от аннотации избыточного типа массива.

Код:

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"));
  }
}

Ответ 3

Java имеет методы varargs:

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

Вы можете вызвать такой метод с параметрами от нуля до n, компилятор создает массив из параметров, например. метод эквивалентен этой Подписи:

public void foo(String[] args)

Ответ 4

Нет

Но у нас есть анонимный класс.

foo(new Runnable(){public void run(){}});