다음 두 가지 varargs 메서드를 선언하면 :자바에서는 왜 2 개의 varargs 메소드 foo (int ... ints)와 foo (Object ... objects)가 주어진다면 foo() 호출이 애매하지 않은 이유는 무엇입니까?
public void foo(String... strings) {
System.out.println("Foo with Strings");
}
및
public void foo(int... ints) {
System.out.println("Foo with ints");
}
다음 코드가있는 :
foo();
이것은 모호 때문에 컴파일러 오류입니다. 예상했다.
하지만 foo의 다음 두 가지 버전이있는 경우
public void foo(Object... objects) {
System.out.println("Foo with Objects");
}
public void foo(int... ints) {
System.out.println("Foo with ints");
}
다음 코드
foo();
는 ints 버전의 메서드를 호출합니다. 두 번째 예제가 모호하지 않고 왜 Object 메서드를 통해 int 메서드로 해석되는지 설명 할 수 있습니까? 감사.
foo에 대한 호출을 표시하지 않았으므로이 질문이 없으면 대답하기 어렵습니다. –
Jon, foo()의 호출은 말 그대로 foo()입니다. 즉 인수가 0입니다. 이 질문을 명확하게하기 위해 편집 할 것입니다. – mikej
* just * int ...와 object ...로, 이것은 나를 위해 컴파일됩니다. String ... 및 int ... (Object가 아닌 ...)에서는 그렇지 않습니다. 질문을 확인해 주시겠습니까? –