簡體   English   中英

方法簽名中的Java“params”?

[英]Java “params” in method signature?

在C#中,如果您希望方法具有不確定數量的參數,則可以使方法簽名中的最后一個參數成為params以便方法參數看起來像一個數組但允許使用該方法的每個人傳遞盡可能多的參數鍵入者想要的類型。

我很確定Java支持類似的行為,但我無法找到如何做到這一點。

在Java中,它被稱為varargs ,語法看起來像一個常規參數,但在類型后面帶有省略號(“...”):

public void foo(Object... bar) {
    for (Object baz : bar) {
        System.out.println(baz.toString());
    }
}

vararg參數必須始終是方法簽名中的最后一個參數,並且可以像訪問該類型的數組一樣進行訪問(例如,在這種情況下為Object[] )。

這將在Java中發揮作用

public void foo(String parameter, Object... arguments);

您必須添加三個點...並且varagr參數必須是方法簽名中的最后一個。

正如它在以前的答案中寫的那樣,它是varargs並用ellipsis聲明( ...

此外,您可以傳遞值類型和/或引用類型,也可以同時傳遞混合(google Autoboxing )。 此外,您可以將method參數用作數組,如下面的printArgsAlternate方法所示。

演示代碼

public class VarargsDemo {

    public static void main(String[] args) {
        printArgs(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
        printArgsAlternate(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
    }

    private static void printArgs(Object... arguments) {
        System.out.print("Arguments: ");
        for(Object o : arguments)
            System.out.print(o + " ");

        System.out.println();
    }

    private static void printArgsAlternate(Object... arguments) {
        System.out.print("Arguments: ");

        for(int i = 0; i < arguments.length; i++)
            System.out.print(arguments[i] + " ");

        System.out.println();
    }

}

產量

Arguments: 3 true Hello! true 25.3 a X 
Arguments: 3 true Hello! true 25.3 a X 

暫無
暫無

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

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