메소드의 Java 변수 번호 또는 인수


146

가변 개수의 매개 변수를 허용하는 메소드를 선언 할 수 있습니까?

이 방법에서 변수에 여러 개의 매개 변수를 허용해야 함을 나타내는 기호에 사용 된 기호는 무엇입니까?

답 : varargs


11
숙제이기 때문에 우리는 당신의 질문을 알고 싶지 않고 단지 당신이 배우고 있다는 것을 알고 싶어합니다.
HDave

답변:


274

맞습니다. 이에 대한 자세한 내용 은 varargs대한 Oracle 안내서를 참조하십시오 .

예를 들면 다음과 같습니다.

void foo(String... args) {
    for (String arg : args) {
        System.out.println(arg);
    }
}

로 불릴 수있는

foo("foo"); // Single arg.
foo("foo", "bar"); // Multiple args.
foo("foo", "bar", "lol"); // Don't matter how many!
foo(new String[] { "foo", "bar" }); // Arrays are also accepted.
foo(); // And even no args.

1
다양한 유형의 매개 변수를 수행 할 수 있습니까? 예 : (String ... strs, int ... ints). 어떤 순서로든 모든 유형의 인수는 어떻습니까?
trusktr

5
@ trusktr : 객체를 원하면을 사용하십시오 Object....
BalusC

2
@trusktr 아니오, 프리미티브는 객체가 아닙니다. 차이점은 다음과 같습니다. programmerinterview.com/index.php/java-questions/…
Dick Lucas

5
@Richard : autoboxingObject... args 때문에 using 은 프리미티브와 함께 작동 합니다.
수밋

1
@StevenVascellaro : 나는 그래서 당신은 아마 간단하게 할 수있는, 인수가 배열처럼 처리한다고 가정varargs.length
LMD

15
Variable number of arguments

가변 수의 인수를 메소드에 전달할 수 있습니다. 그러나 몇 가지 제한 사항이 있습니다.

  • 변수의 개수는 모두 같은 유형이어야합니다
  • 메소드 내에서 배열로 취급됩니다.
  • 메소드의 마지막 매개 변수 여야합니다.

이러한 제한 사항을 이해하려면 다음 코드 스 니펫에서 정수 목록에서 가장 큰 정수를 리턴하는 데 사용 된 메소드를 고려하십시오.

private static int largest(int... numbers) {
     int currentLargest = numbers[0];
     for (int number : numbers) {
        if (number > currentLargest) {
            currentLargest = number;
        }
     }
     return currentLargest;
}

Oracle Certified Associate Java SE 7 프로그래머 연구 가이드 2012


14

예, 가능합니다 :

public void myMethod(int... numbers) { /* your code */ }

10

다른 유형의 인수에는 3 점이 있습니다 .

public void foo(Object... x) {
    String myVar1  = x.length > 0 ? (String)x[0]  : "Hello";
    int myVar2     = x.length > 1 ? Integer.parseInt((String) x[1]) : 888;
} 

그런 다음 전화

foo("Hii"); 
foo("Hii", 146); 

보안을 위해 다음과 같이 사용하십시오.
if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }

이 방법의 주요 단점은 선택적 매개 변수가 다른 유형 인 경우 정적 유형 검사를 잃는다는 것입니다. 더 많은 변형을 참조하십시오 .



0

Java는 vargs메소드 매개 변수를 허용 합니다.

public class  Varargs
{
   public int add(int... numbers)
   { 
      int result = 1; 
      for(int number: numbers)
      {
         result= result+number;  
      }  return result; 
   }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.