簡體   English   中英

使用Java中的varargs重載方法

[英]Method overloading using varargs in Java

Java中的以下代碼使用varargs來重載方法。

final public class Main
{
    private void show(int []a)
    {
        for(int i=0;i<a.length;i++)
        {
            System.out.print(a[i]+"\t");
        }
    }

    private void show(Object...a)
    {
        for(int i=0;i<a.length;i++)
        {
            System.out.print(a[i]+"\t");
        }

        System.out.println("\nvarargs called");
    }

    public static void main(String... args)
    {
        int[]temp=new int[]{1,2,3,4};            

        Main main=new Main();
        main.show(temp);
        main.show();         //<-- How is this possible?
    }
}

上述代碼的輸出如下。

1        2        3        4

varargs called

最后一行main.show(); main()方法中調用show(Object...a){}方法,該方法具有varargs形式參數。 這個語句怎么能是main.show(); 調用那個沒有實際參數的方法?

main.show()調用show(Object... a)方法並傳遞零長度數組。

Varargs允許你有零個或多個參數,這就是為什么用main.show()調用它是合法的。

順便提一下,我建議您不要在System.out.println語句中嵌入\\n - printlnln位會為您打印一個適合您正在運行的系統的換行符。 \\n不可攜帶。

varargs語法基本上允許您指定有可能的參數,對吧? 他們可以在那里,或者不能在那里。 這就是三個點的目的。 調用方法時,可以使用或不使用這些參數調用它。 這樣做是為了避免必須將數組傳遞給方法。 例如,你可以寫:

main.show(1, 2, 3, 4);

這也可以,因為數字將成為包裝類中的對象。 如果你仍然感到困惑,請看一下: http//docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html或者: 你什么時候在Java中使用varargs?

main.show()調用采用NO參數,這對於匹配show(Object ... a)方法是完全有效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM