Variable argument

Dongwoo Joo·2024년 12월 12일

java

목록 보기
7/8

개요

public static int hash(Object...params)

파라미터 수의 제한을 두지 않는 것을 가변인자(variable argument) 선언 이라 한다.

가변 인자 선언과 호출

가변인자의 의미

각 단어의 의미에서 복합어 의미를 찾기
가변: 변할 수 있음.
인자: 파라미터
-> 파라미터가 변할 수 있다. -> 파라미터를 변수로 선언하면 당연히 변할 수 있지 않나?
-> 아니, 파라미터의 개수가 변할 수 있다.
가변 인자: 전달되는 인자의 수가 변할 수 있다.

가변 인자 선언과 호출

class Varargs {
	public static void showAll(String...vargs) {
		System.out.println("LEN: " + vargs.length)
	}
}

가변 인자 선언에 대한 컴파일러의 처리

public static void showAll(String...vargs) {...}

public static void main(String[] args) {
	showAll("Box");
	showAll("Box", "Toy");
}

위를 아래처럼 작성할 수 있다(같은 결과를 반환)
그리고 아래가 자바 컴파일러가 가변 인자 선언 및 메소드 호출문을 처리하는 방식이기도 하다.

public static void showAll(String[] vargs) {...}

public static void main(String[] args) {
	showAll(new String[]{"Box"});
	showAll(new String[]{"Box", "Toy"});
}

즉, 컴파일러는 A 메소드 정의를 B로 수정하여 컴파일을 완료한다.

// 메소드 정의 방식
public static void showAll(String...vargs) {...} // A 정의
public static void showAll(String[] vargs) {...} // B 정의
// A는 B 메소드로 수정하여 컴파일을 완료한다.

showAll("Box", "Toy", "Apple"); // A 메소드 사용방식
showAll(new String[]{"Box", "Toy", "Apple"}); // B 메소드 사용방식

// A는 B 메소드 사용방식으로 수정하여 컴파일을 완료한다.

참고문헌

윤성우의 열혈 자바 프로그래밍

profile
pursue nature

0개의 댓글