메소드 서명의 Java "Params"?
-
21-08-2019 - |
문제
C#에서, 메소드가 불확실한 수의 매개 변수를 갖는 경우 메소드 서명 a에서 최종 매개 변수를 만들 수 있습니다. params
메소드 매개 변수가 배열처럼 보이지만 메소드를 사용하는 모든 사람이 호출자가 원하는만큼 해당 유형의 많은 매개 변수를 전달할 수 있도록합니다.
나는 Java가 비슷한 행동을 지원한다고 확신하지만, 어떻게 해야하는지 알 수 없습니다.
해결책
Java에서는 호출됩니다 varargs, 그리고 구문은 일반 매개 변수처럼 보이지만 유형의 후에는 타원 ( "...")이 있습니다.
public void foo(Object... bar) {
for (Object baz : bar) {
System.out.println(baz.toString());
}
}
vararg 매개 변수는해야합니다 언제나 마지막 메소드 서명의 매개 변수는 해당 유형의 배열을받은 것처럼 액세스합니다 (예 : Object[]
이 경우).
다른 팁
이것은 Java에서 트릭을 수행합니다
public void foo(String parameter, Object... arguments);
3 점을 추가해야합니다 ...
그리고 varagr
매개 변수는 메소드 서명의 마지막이어야합니다.
이전 답변에 쓰여진 것처럼 varargs
그리고 선언했습니다 ellipsis
(...)
또한 값 유형 및/또는 참조 유형 또는 혼합물을 전달할 수 있습니다 (Google 오토 옥싱). 또한 메소드 매개 변수를 다음과 같이 배열로 사용할 수 있습니다. printArgsAlternate
아래의 방법.
데모 코드
public class VarargsDemo {
public static void main(String[] args) {
printArgs(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
printArgsAlternate(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
}
private static void printArgs(Object... arguments) {
System.out.print("Arguments: ");
for(Object o : arguments)
System.out.print(o + " ");
System.out.println();
}
private static void printArgsAlternate(Object... arguments) {
System.out.print("Arguments: ");
for(int i = 0; i < arguments.length; i++)
System.out.print(arguments[i] + " ");
System.out.println();
}
}
산출
Arguments: 3 true Hello! true 25.3 a X
Arguments: 3 true Hello! true 25.3 a X
제휴하지 않습니다 StackOverflow