Java에서 변수 인수를 사용하는 동안 모호함이 있습니다. 이것은 두 개의 메소드가 데이터 값에 의해 호출될 만큼 충분히 유효할 수 있기 때문에 발생합니다. 이 때문에 컴파일러는 어떤 메서드를 호출해야 하는지 알지 못합니다.
예시
public class Demo { static void my_fun(double ... my_Val){ System.out.print("fun(double ...): " + "Number of args: " + my_Val.length ); for(double x : my_Val) System.out.print(x + " "); System.out.println(); } static void my_fun(boolean ... my_Val){ System.out.print("fun(boolean ...) " + "The number of arguments: " + my_Val.length); for(boolean x : my_Val) System.out.print(x + " "); System.out.println(); } public static void main(String args[]){ my_fun(11.56, 34.78, 99.09, 56.66); System.out.println("Function 1 has been successfully called"); my_fun(true, false, true, false); System.out.println("Function 2 has been successfully called"); my_fun(); System.out.println("Function 3 has been successfully called"); } }
출력
Demo.java:23: error: reference to my_fun is ambiguous my_fun(); ^ both method my_fun(double...) in Demo and method my_fun(boolean...) in Demo match 1 error
Demo라는 클래스는 부동 소수점 값의 가변 수를 취하는 'my_fun'이라는 함수를 정의합니다. 값은 'for' 루프를 사용하여 콘솔에 인쇄됩니다. 이 함수는 오버로드되고 매개변수는 숫자가 변하는 부울 값입니다. 출력은 'for' 루프를 사용하여 콘솔에 표시됩니다.
주 함수에서 'my_fun'은 먼저 부동 ppoint 값으로 호출된 다음 부울 값으로 호출된 다음 매개변수 없이 호출됩니다. 결과적으로 발생하는 예외가 콘솔에 표시됩니다.