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

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

你什么時(shí)候在Java中使用varargs?

你什么時(shí)候在Java中使用varargs?

湖上湖 2019-12-22 20:12:58
你什么時(shí)候在Java中使用varargs?我害怕varargs。我不知道該怎么用它們。另外,讓人們通過(guò)他們想要的許多論點(diǎn)是危險(xiǎn)的。什么是上下文的一個(gè)例子,它將是一個(gè)使用它們的好地方?
查看完整描述

3 回答

?
躍然一笑

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

一個(gè)好的經(jīng)驗(yàn)法則是:

“對(duì)任何需要T數(shù)組(無(wú)論T類(lèi)型)作為輸入的方法(或構(gòu)造函數(shù))使用varargs”。

這將使這些方法的調(diào)用更容易(不需要這樣做new T[]{...})。

您可以擴(kuò)展此規(guī)則以包含帶List<T>參數(shù)的方法,前提是此參數(shù)僅用于輸入(即,該方法不修改列表)。

另外,我會(huì)避免使用,f(Object... args)因?yàn)樗腁PI 會(huì)出現(xiàn)不明確的編程方式。

在示例方面,我在DesignGridLayout中使用它,我可以JComponent在一個(gè)調(diào)用中添加幾個(gè)s:

layout.row().grid(new JLabel("Label")).add(field1, field2, field3);

在上面的代碼中,add()方法定義為add(JComponent... components)

最后,這些方法的實(shí)現(xiàn)必須注意它可以用空的vararg調(diào)用它!如果你想強(qiáng)加至少一個(gè)參數(shù),那么你必須使用一個(gè)丑陋的技巧,例如:

void f(T arg1, T... args) {...}

我認(rèn)為這個(gè)技巧很難看,因?yàn)樵摲椒ǖ膶?shí)現(xiàn)不如僅僅T... args在其參數(shù)列表中那么簡(jiǎn)單。

希望這有助于澄清關(guān)于varargs的觀點(diǎn)。



查看完整回答
反對(duì) 回復(fù) 2019-12-23
?
溫溫醬

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

我經(jīng)常使用varargs輸出到日志以進(jìn)行調(diào)試。

幾乎我的應(yīng)用程序中的每個(gè)類(lèi)都有一個(gè)方法debugPrint():

private void debugPrint(Object... msg) {
    for (Object item : msg) System.out.print(item);
    System.out.println();}

然后,在類(lèi)的方法中,我有如下調(diào)用:

debugPrint("for assignment ", hwId, ", student ", studentId, ", question ",
    serialNo, ", the grade is ", grade);

當(dāng)我對(duì)我的代碼正常工作感到滿(mǎn)意時(shí),我會(huì)在debugPrint()方法中注釋掉代碼,這樣日志就不會(huì)包含太多無(wú)關(guān)和不需要的信息,但是我可以將對(duì)debugPrint()的各個(gè)調(diào)用取消注釋。稍后,如果我發(fā)現(xiàn)了一個(gè)錯(cuò)誤,我只需取消注釋debugPrint()代碼,并重新激活我對(duì)debugPrint()的所有調(diào)用。

當(dāng)然,我可以輕易地避開(kāi)varargs并執(zhí)行以下操作:

private void debugPrint(String msg) {
    System.out.println(msg);}debugPrint("for assignment " + hwId + ", student " + studentId + ", question "
    + serialNo + ", the grade is " + grade);

但是,在這種情況下,當(dāng)我注釋掉debugPrint()代碼時(shí),服務(wù)器仍然需要在每次調(diào)用debugPrint()時(shí)連接所有變量的麻煩,即使對(duì)結(jié)果字符串沒(méi)有任何處理。但是,如果我使用varargs,服務(wù)器只有在意識(shí)到它不需要它們之前才必須將它們放在一個(gè)數(shù)組中。節(jié)省了很多時(shí)間。



查看完整回答
反對(duì) 回復(fù) 2019-12-23
  • 3 回答
  • 0 關(guān)注
  • 295 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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