第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

從調(diào)用方法傳遞可變數(shù)量的參數(shù)

從調(diào)用方法傳遞可變數(shù)量的參數(shù)

米琪卡哇伊 2022-09-22 19:50:01
假設(shè)我們有一個(gè)方法,該方法接收至少一個(gè)參數(shù),并且可能接收 0 個(gè)或多個(gè)相同類型的參數(shù):public void method(T p1, T... otherPs)而且我們有一個(gè)調(diào)用它的方法,如下所示:public void callingMethod(T... params) 我們知道至少有一個(gè)參數(shù)。有沒有可能從中調(diào)用看起來像這樣的東西?methodcallingMethodpublic void callingMethod(T... params){    [...]    method(params[0], restOfParams);    [...]}
查看完整描述

3 回答

?
MM們

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊

當(dāng)然,這是可能的,而且很容易。
唯一的開銷是創(chuàng)建另一個(gè)數(shù)組。
請參閱尤金的答案以了解內(nèi)存消耗。

public void callingMethod(T... params){

    ...

    method(params[0], Arrays.copyOfRange(params, 1, params.length));

    ...

}

有點(diǎn)偏離主題,但我只是按照建議運(yùn)行JOL,這里是空引用數(shù)組的輸出


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;                                []

對于具有單個(gè) 、 元素的數(shù)組null


final String array = new String[1];

[Ljava.lang.String;@7ea37dbfd object externals:

          ADDRESS       SIZE TYPE                PATH                           VALUE

        71692a7a8         24 [Ljava.lang.String;                                [null]

對于包含單個(gè)非元素的數(shù)組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)



查看完整回答
反對 回復(fù) 2022-09-22
?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊

是的,至少有幾個(gè)方面。

因?yàn)?Java 中的 varargs 是關(guān)于傳入數(shù)組的語法糖,所以你可以創(chuàng)建一個(gè)包含其余參數(shù)的數(shù)組(可能使用 Arrays.copyOfRange),并將其作為第二個(gè)參數(shù)傳遞:

method(params[0], Arrays.copyOfRange(params, 1, params.length));

另一種方式是通過反思,但你在這里不需要它。


查看完整回答
反對 回復(fù) 2022-09-22
?
DIEA

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊

我不明白你的問題,但不一定意味著在varargs中至少有一個(gè)參數(shù)。

此外,您可以檢查參數(shù)長度 != 0

然后調(diào)用方法(參數(shù)[0],數(shù)組復(fù)制范圍(參數(shù),1,參數(shù)長度));


查看完整回答
反對 回復(fù) 2022-09-22
  • 3 回答
  • 0 關(guān)注
  • 162 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)