programing

메서드 시그니처의 Java "패럴"?

shortcode 2022. 9. 6. 23:54
반응형

메서드 시그니처의 Java "패럴"?

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(...)

또한 값 유형 및/또는 참조 유형을 전달하거나 혼합(구글 자동 상자 설정) 수 있습니다.또한 method 파라미터를 배열로 사용할 수 있습니다.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 

언급URL : https://stackoverflow.com/questions/519752/java-params-in-method-signature

반응형