수색…


비고

"varargs"메서드 인수는 해당 메서드의 호출자가 지정된 형식의 여러 인수를 각각 별도의 인수로 지정할 수있게합니다. 메소드 선언에서 기본 유형 다음의 세 ASCII 기간 ( ... )으로 지정됩니다.

메소드 자체는 단일 인수로 인수를받습니다. 요소 유형은 varargs 인수의 유형입니다. 배열은 자동으로 만들어집니다 (호출자는 여러 값을 별도의 메서드 인수로 전달하는 대신 명시 적 배열을 전달할 수 있지만).

varargs에 대한 규칙 :

  1. Varargs가 마지막 인수 여야합니다.
  2. 메서드에는 하나의 Varargs 만있을 수 있습니다.

위의 규칙을 따라야합니다. 그렇지 않으면 프로그램에서 컴파일 오류가 발생합니다.

varargs 매개 변수 지정

void doSomething(String... strings) {
    for (String s : strings) {
        System.out.println(s);
    }
}

마지막 매개 변수 유형 다음의 세 마침표는 최종 인수가 배열 또는 인수 시퀀스로 전달 될 수 있음을 나타냅니다. Varargs는 최종 인수 위치에서만 사용할 수 있습니다.

Varargs 매개 변수를 사용한 작업

varargs를 메소드 정의의 매개 변수로 사용하면 배열 또는 인수 시퀀스를 전달할 수 있습니다. 인수 시퀀스가 ​​전달되면 자동으로 배열로 변환됩니다.

이 예제는 배열과 printVarArgArray() 메소드에 전달되는 인수의 시퀀스를 보여주고 메소드 내부의 코드에서 똑같이 처리되는 방법을 보여줍니다.

public class VarArgs {
    
    // this method will print the entire contents of the parameter passed in
    
    void printVarArgArray(int... x) {
        for (int i = 0; i < x.length; i++) {
            System.out.print(x[i] + ",");
        }
    }
    
    public static void main(String args[]) {
        VarArgs obj = new VarArgs();
        
        //Using an array:
        int[] testArray = new int[]{10, 20};
        obj.printVarArgArray(testArray); 
       
        System.out.println(" ");
        
        //Using a sequence of arguments
        obj.printVarArgArray(5, 6, 5, 8, 6, 31);
    }
}

산출:

10,20, 
5,6,5,8,6,31

이와 같이 메서드를 정의하면 컴파일 타임 오류가 발생합니다.

void method(String... a, int... b , int c){} //Compile time error (multiple varargs )

void method(int... a, String b){} //Compile time error (varargs must be the last argument 


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow