Pergunta

Em C #, se você quiser um método para ter um número indeterminado de parâmetros, você pode fazer o parâmetro final na assinatura do método um params para que os olhares de parâmetros método como uma matriz, mas permite que todos usando o método para passar como muitos parâmetros desse tipo que o chamador deseja.

Estou bastante certo Java suporta comportamento semelhante, mas não consigo descobrir como fazê-lo.

Foi útil?

Solução

Em Java é chamado varargs , e os olhares de sintaxe como um parâmetro regular, mas com reticências ( "...") depois do tipo:

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

O mosto parâmetro vararg sempre ser última parâmetro na assinatura do método, e é acessado como se você recebeu uma matriz desse tipo (por exemplo Object[] neste caso) .

Outras dicas

Isto irá fazer o truque em Java

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

Você tem que adicionar três pontos ... eo parâmetro varagr deve ser o último na assinatura do método.

Como está escrito em respostas anteriores, é varargs e declarou com ellipsis ( ... )

Além disso, você pode passar os tipos de valor e / ou tipos de referência ou ambos misturados (google Autoboxing ). Além disso, você pode usar o parâmetro de método como uma matriz como mostrado com o método printArgsAlternate abaixo.

Demonstração Código

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();
    }

}

saída

Arguments: 3 true Hello! true 25.3 a X 
Arguments: 3 true Hello! true 25.3 a X 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top