「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > さまざまな引数を持つJavaメソッドに引数として配列を渡すことはできますか?

さまざまな引数を持つJavaメソッドに引数として配列を渡すことはできますか?

2025-03-25に投稿されました
ブラウズ:908

Can I Pass an Array as Arguments to a Java Method with Variable Arguments?

java?

in java、 variable arityメソッド liable arumentisを使用して、javaの可変引数を持つ方法に引数として配列を渡すことができます。配列を可変アリティメソッドに渡すと、配列要素はその方法の個々の引数として扱われます。 プライベート文字列の贅沢; public string myformat(string format、object ... args){ return string.format(format、extrabar、args); } }

この例では、myformatメソッドは変数数の引数(... argsで表される)を使用し、string.formatメソッドを使用して文字列をフォーマットします。問題は、ARGSが個々の引数としてではなく、単一のオブジェクト[]配列として扱われることです。これに対処するために、t ...はt []。[]。これ、次のコードスニペットは、Arrayを可変アリティメソッドに引数として渡す方法を示しています。 string format = new String(new char [args.length])。置換( "\ 0"、 "[%s]"); return string.format(format、args); } public static void main(string ... args){ system.out.println(ezformat( "a"、 "b"、 "c")); //印刷「[a] [b] [c]」 }

class A {
  private String extraVar;

  public String myFormat(String format, Object... args) {
    return String.format(format, extraVar, args);
  }
}

gotchas

gotchas

null values
を可変アリティ方法に渡すときにnull値を渡すためにnull値を渡すためにnull値を渡すことが重要です。例:

static void count(object ... objs){ System.out.println(objs.length); } count(null、null、null); // "3"を印刷 count(null、null); // "2"を印刷 count(null); // java.lang.nullpointerexception !!!
public static String ezFormat(Object... args) {
    String format = new String(new char[args.length]).replace("\0", "[ %s ]");
    return String.format(format, args);
}

public static void main(String... args) {
    System.out.println(ezFormat("A", "B", "C")); // prints "[ A ][ B ][ C ]"
}
... nullpointerexceptionになります。これを避けるために、NULL引数を別の配列またはこのようなオブジェクトとして渡すことができます。 // "1"を印刷 count((object)null); // "1"

追加引数の追加

を追加するには、Append()やPrepend()などのヘルパーメソッドを使用して配列を使用して配列を使用することができます。 final int n = arr.length; arr = java.util.arrays.copyof(arr、n 1); arr [n] = lastelement; arrを返します。 } static t [] prepend(t [] arr、t firstelement){ final int n = arr.length; arr = java.util.arrays.copyof(arr、n 1); System.ArrayCopy(arr、0、arr、1、n); arr [0] = firstlement; arrを返します。 }

プリミティブの配列

可変アリティメソッドは、参照タイプでのみ動作します。自動ボクシングは、プリミティブの配列には適用されません。一連のプリミティブを渡すには、まずラッパータイプの配列に変換する必要があります。 System.out.println(ezformat(mynumbers)); //印刷「[[I@13C5982]」 integer [] myNumbers = {1、2、3}; System.out.println(ezformat(mynumbers)); //印刷[1] [2] [3] "
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3