これは愚かな問題かもしれません。私は達成したいことがはっきりしていると信じていますが、私はそれの構文を考えることはできません。私が持っているとします:ベクトルをJavaのパラメータとして送信
public void foo(int[] v){
}
public static void main(String args[]){
foo({1, 2, 3});
}
新しい配列を宣言することなくfooを呼び出すことはできますか?はいの場合、どうですか?
これは愚かな問題かもしれません。私は達成したいことがはっきりしていると信じていますが、私はそれの構文を考えることはできません。私が持っているとします:ベクトルをJavaのパラメータとして送信
public void foo(int[] v){
}
public static void main(String args[]){
foo({1, 2, 3});
}
新しい配列を宣言することなくfooを呼び出すことはできますか?はいの場合、どうですか?
あなたのコードはあなたが書いた方法でコンパイルされません。しかし、これは意志、そして多分それはあなたが何をしたいです:
ここpublic void foo(int... v) {
// ...
}
public static void main(String args[]) {
foo(1, 2, 3);
}
、foo
に渡された値が自動的に配列に変換されます。 v
の値は、実際にはint[]
になります。また
、foo
の元の署名を維持し、 あなたはこのように書かれている可能性があり:
public void foo(int[] v) {
// ...
}
public static void main(String args[]) {
int[] params = {1, 2, 3};
foo(params);
}
あなたが書いたようにfoo({1, 2, 3})
にそうでない場合は、これらの2つの行を結合することはできません。
それとも、このように記述することができます。
public static void main(String args[]) {
foo(new int[]{1, 2, 3});
}
私は最初のバージョンで書いたint...
構文は、「可変引数」と呼ばれ、 あなたはそれについての詳細を読みたい場合。 初心者の方には、 という落とし穴がありますので、使用することはお勧めしません。 というより便利です。 現在は2番目または3番目のバージョンに固執しています。
@BillMackそれはいいです、私の更新された答えを見てください。 – janos
新しい配列を宣言する必要があります。変数に代入する必要はありません。 –
これはうまくいくようです。愚か私はfooを試していない(新しいint [] {1,2,3}); –