자바에서 매개변수에 ... 처럼 점 3개가 나오는데 이게 뭔가요?"

소스를 보다가 아래처럼 매개변수에 점 세개가 오는데 이게 무슨 뜻이에요??

 public void myMethod(String... strings){
    // method body
}

1답변

  • 좋아요

    1

    싫어요
    채택취소하기

    네 저걸 보통 varargs 또는 가변인자라고 하는데요. 무슨뜻이냐면 String 객체가 0개부터 여러개까지 매개변수로 올수 있다, 이런 뜻이에요.

    위의 예에서는

    myMethod(); // Likely useless, but possible
    myMethod("one", "two", "three");
    myMethod("solo");
    myMethod(new String[]{"a", "b", "c"});
    

    이런식으로 다양하게 쓸수 있죠. 중요한건 가변인자는 항상 배열일 필요없이 인자를 전달하지 않아도! 되고 인자 값이 한개도 가능하다는 것입니다.

    또 위의 식으로 메소드에 전달했을 때

    public void myMethod(String... strings){
        for(String whatever : strings){
                //가변인수에 전달된 객체를 각각 접근
        }
    
        // 위의 코드와 동일 각각 접근가능 
        for( int i = 0; i < strings.length; i++){
            // strings[i]형식으로 배열에 각각 접근가능하다.
        }
    }
    

    또 가변인자는 항상 맨 뒤에 와야해요 myMethod(int i, String... strings) 이런 식으로는 가능하지만 myMethod(String... strings, int i) 이렇게 먼저와버리면 안됩니다.

    • 이해하기 쉬운설명 감사합니다. ㅎㅎ 이충희 2017.9.7 09:53

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.