source

메서드에 대한 Java 변수 인수 수

goodcode 2022. 8. 29. 22:10
반응형

메서드에 대한 Java 변수 인수 수

변수 개수의 파라미터를 허용하는 메서드를 선언할 수 있습니까?

방법이 가변적인 수의 매개변수를 허용해야 한다는 것을 나타내는 정의에 사용되는 상징성은 무엇입니까?

답변: vararargs

맞아요.자세한 내용은 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.

네, 가능합니다.

public void myMethod(int... numbers) { /* your code */ }
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

다른 유형의 인수에는 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("..."); }

이 접근법의 주요 단점은 옵션파라미터의 유형이 다른 경우 정적 유형 체크가 손실된다는 것입니다. 많은 변형을 봐주세요.

Java 5 이후: http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html

예 Java에서 허용vargsmethod 파라미터로 지정합니다.

public class  Varargs
{
   public int add(int... numbers)
   { 
      int result = 1; 
      for(int number: numbers)
      {
         result= result+number;  
      }  return result; 
   }
}

언급URL : https://stackoverflow.com/questions/2330942/java-variable-number-of-arguments-for-a-method

반응형