メソッドを呼び出してから、パラメータの可変数を渡します

CosminO:

我々は、少なくとも一つのパラメータと同じタイプの潜在0以上のパラメータを受け取るメソッドを持っていると仮定すると:

public void method(T p1, T... otherPs)

そして、私たちはこのようになりますことを、それを呼び出すメソッドを持っていること:

public void callingMethod(T... params) 

私たちが知っていることは、少なくとも1つのパラメータがあります。

それが呼び出すことが可能であるmethodからcallingMethod、このような何かを見て?

public void callingMethod(T... params){
    [...]
    method(params[0], restOfParams);
    [...]
}
LppEdd:

確かに、それは可能であり、とても簡単。
唯一のオーバーヘッドは別の配列の作成です。
ユージーンを参照してください答えをメモリ消費を理解すること。


public void callingMethod(T... params){
    ...
    method(params[0], Arrays.copyOfRange(params, 1, params.length));
    ...
}

トピックオフビットが、私はちょうど示唆したように、JOLを実行し、ここでは空の参照アレイの出力であります

final String[] array = new String[0];

# Running 64-bit HotSpot VM.
# Using compressed oop with 3-bit shift.
# Using compressed klass with 0x0000000800000000 base address and 0-bit shift.
# Objects are 8 bytes aligned.
# Field sizes by type: 4, 1, 1, 2, 2, 4, 4, 8, 8 [bytes]
# Array element sizes: 4, 1, 1, 2, 2, 4, 4, 8, 8 [bytes]

[Ljava.lang.String;@7ea37dbfd object externals:
          ADDRESS       SIZE TYPE                PATH                           VALUE
        71695b2d0         16 [Ljava.lang.String;                                []

単一の配列のためにnull、要素

final String array = new String[1];

[Ljava.lang.String;@7ea37dbfd object externals:
          ADDRESS       SIZE TYPE                PATH                           VALUE
        71692a7a8         24 [Ljava.lang.String;                                [null]

単一の、非含む配列のためnull、要素を

final String array = new String[1];
array[0] = new String("");

[Ljava.lang.String;@7ea37dbfd object externals:
          ADDRESS       SIZE TYPE                PATH                           VALUE
        707612b68         16 [B                  [0].value                      []
        707612b78    1577856 (something else)    (somewhere else)               (something else)
        707793ef8         24 [Ljava.lang.String;                                [(object)]
        707793f10         24 java.lang.String    [0]                            (object)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=119840&siteId=1