문제

C#에서, 메소드가 불확실한 수의 매개 변수를 갖는 경우 메소드 서명 a에서 최종 매개 변수를 만들 수 있습니다. 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);

3 점을 추가해야합니다 ... 그리고 varagr 매개 변수는 메소드 서명의 마지막이어야합니다.

이전 답변에 쓰여진 것처럼 varargs 그리고 선언했습니다 ellipsis (...)

또한 값 유형 및/또는 참조 유형 또는 혼합물을 전달할 수 있습니다 (Google 오토 옥싱). 또한 메소드 매개 변수를 다음과 같이 배열로 사용할 수 있습니다. 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 ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top