메서드에 대한 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에서 허용vargs
method 파라미터로 지정합니다.
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
'source' 카테고리의 다른 글
void*의 의미와 사용방법 (0) | 2022.08.30 |
---|---|
컴포넌트 method()에서 Vuex $store.getters에 액세스합니다. (0) | 2022.08.30 |
AWS 오류 메시지:이 리소스에 대해 충돌하는 조건부 작업이 현재 진행 중입니다. (0) | 2022.08.29 |
Vuex 커밋이 v-show를 트리거하지 않음 (0) | 2022.08.29 |
Element UI Input v2.x에 입력할 때 값을 내보내는 방법 (0) | 2022.08.29 |