1

次のような方法があるとします。

public void blit(int[] pos) {
   do stuff..
}

最初に宣言せずに引数のリストを渡す方法はありますか?

たとえば、Python では、次のようなことができます。

def blit(pos):
   stuf...

blit([20,50])

引数リストで特別に作成されたリストを単純に渡すことができます。Java で同等のことを行うには、最初に配列を宣言する必要があるようです。その後で初めて、それをメソッドに渡すことができます。

int[] coordinates = {20,50};
blit(coordinates);

これは大したことではありませんが、次のようなことができれば便利です。

blit({20,50});

しかし、もちろん、それはうまくいきません。また、次のような呼び出し内で配列を作成しようとしましたが、

blit(new int[] = {20,40});

しかし、やはり運が悪い。ひどい質問かもしれませんが、Python の動作を部分的に模倣するメソッドに引数のリストを渡す方法はありますか?

4

9 に答える 9

7

次の 2 つの方法で実行できます。

blit(new int[] {20,40});

または、varargs を使用してメソッドを宣言します。

public void blit(int... pos) {}

次のように呼び出します。

blit(20, 40);
于 2012-09-06T17:35:48.027 に答える
2

あなたは近かった:

blit(new int[] {20,40});
于 2012-09-06T17:34:44.933 に答える
2

匿名配列の作成を意味していると思います:

blit(new int[] {20, 40});

私は正しいですか?

于 2012-09-06T17:34:49.927 に答える
1

はい、可変数の引数構文を使用します。

public void blit(Object ... args)
{
}

blit(10, 20, 30);

同種の引数を渡したい場合は、 aList<type>を優先する必要があります。

于 2012-09-06T17:34:57.837 に答える
0

次のように呼び出しますblit(new int[]{20,40});

参照型の場合、メソッド whis varargs を宣言できます。

 public void blit(Integer... pos) {
    //do stuff..
 }
 // and the array creation code will be inserted by the compiler:
 blit(20,40);
于 2012-09-06T17:42:54.060 に答える
0

次の構文を使用します。

blit(new int[]{20, 40});
于 2012-09-06T17:34:58.323 に答える
0

次のようなことができます

  blit(new int[]{5,10});
于 2012-09-06T17:35:01.390 に答える
0

なぜあなたは使わないのですかList........

blit(new List<Integer>());

于 2012-09-06T17:37:19.010 に答える
0

java.util.Map<String,Object>メソッドの唯一の引数としてa を置くことができます。(キー=引数の名前付き)

java.util.Map<String,Object> arguments=new HashMap<String,Object>();
List<Integer> positions=new ArrayList<Integer>();
positions.add(1);
positions.add(2);
arguments.put("pos",positions);

myfunction_call(arguments);
于 2012-09-06T17:37:43.187 に答える