web-dev-qa-db-ja.com

メソッド引数の配列を初期化する

PHPでは、次のことができます。

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

Javaで、文字列配列をメソッド呼び出しの引数として初期化できます。tihsのようなものです。

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

ありがとう!

25
aksamit

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

@Hovercraftの答えは、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"));
  }
}
5
missingfaktor

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(){}});
1
Jigar Joshi