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

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

varargs和“…”參數(shù)

varargs和“…”參數(shù)

開滿天機(jī) 2019-10-30 12:47:22
考慮方法聲明:String.format(String, Object ...)該Object ...參數(shù)只是對Objects 數(shù)組的引用。有沒有辦法在引用實際Object數(shù)組時使用此方法?如果我將Object數(shù)組傳遞給...參數(shù)-生成的參數(shù)值將是二維數(shù)組-因為an Object[]本身就是an Object:Object[] params = ....; // Make the array (for example based on user-input)String s = String.format("%S has %.2f euros", params);因此,數(shù)組的第一個組件(String.format方法中使用了哪個)將是一個數(shù)組,并且他將生成:[class.getName() + "@" + Integer.toHexString(hashCode())] 然后由于數(shù)組大小為1而發(fā)生錯誤。該大膽的順序是真正的問題。這是第二個問題:是否一個...數(shù)組/參數(shù)有名字嗎?
查看完整描述

3 回答

?
翻過高山走不出你

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

從varargs的文檔中:


最終參數(shù)類型之后的三個句點表示最終參數(shù)可以作為數(shù)組或參數(shù)序列傳遞。


因此,您可以傳遞多個參數(shù)或一個數(shù)組。


以下工作正常:


class VarargTest {

  public static void main(String[] args) {

    Object[] params = {"x", 1.2345f};

    String s = String.format("%s is %.2f", params);

    System.out.println(s); // Output is: x is 1.23

  }

}


查看完整回答
反對 回復(fù) 2019-10-30
?
慕少森

TA貢獻(xiàn)2019條經(jīng)驗 獲得超9個贊

您可以只傳遞一個數(shù)組:


public void foo(String... args) {

}


String args[] = new String[10];

foo(args);


查看完整回答
反對 回復(fù) 2019-10-30
?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗 獲得超15個贊

您所描述的情況將非常罕見:大多數(shù)情況下,您的varargs項將是Strings,或數(shù)字或Widgets ...對于它們來說,它們Object通常是s(可以是任何東西)或數(shù)組是不尋常的。


但是,如果varargs參數(shù)是一堆Objects或數(shù)組類型,那么您的問題的確出現(xiàn)了:您可以將其傳遞給單個數(shù)組,然后編譯器將如何知道是否要傳遞數(shù)組(提供的數(shù)組),或者一系列的1項應(yīng)該將其放入數(shù)組中嗎?


快速測試顯示答案:


public class TestClass {

    public static void main(String[] args) {

        Object anObject = new Object();

        Object[] anArray = new Object[] {anObject, anObject};

        System.out.println("object1 = " + anObject);

        System.out.println("array1 = " + anArray);

        takesArgs();

        takesArgs(anObject, anObject);

        takesArgs(anArray); // is this the same as array1?

        takesArgs(anArray, anArray);

    }


    public static void takesArgs(Object... stuff) {

        System.out.println("The array was " + stuff);

    }

}

執(zhí)行的結(jié)果(您的確切數(shù)字會有所不同:


object1 = java.lang.Object@3e25a5

array1 = [Ljava.lang.Object;@19821f

The array was [Ljava.lang.Object;@addbf1

The array was [Ljava.lang.Object;@42e816

The array was [Ljava.lang.Object;@19821f

The array was [Ljava.lang.Object;@9304b1

因此答案是,在模棱兩可的情況下,它會將您通過的內(nèi)容視為數(shù)組,而不是創(chuàng)建用于包裝它的新數(shù)組。這是有道理的,因為如果您需要其他解釋,可以始終將其包裝在數(shù)組中。


查看完整回答
反對 回復(fù) 2019-10-30
  • 3 回答
  • 0 關(guān)注
  • 494 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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