다음 두 가지 메소드를 고려하십시오. 첫 번째 것은 받아 들여지고 두 번째 것은 모호한 것으로 거부됩니다. 유일한 차이점은 int와 Integer를 사용하는 것입니다.Object 및 기본 유형이있는 애매한 varargs 메소드
특히 두 번째 것을 거부해야합니까? 그것은 권투 (첫 번째 세트로 이어질 것입니다) 후 그것을 받아들이는 것이 문제가 있음을 암시합니다. 나는 여기서 무엇을 놓칠까요?
필자의 견해로는 Java 컴파일러가 너무 제한적입니다.
세트 1 :
public void test(Object... values) {}
public void test(Integer x, Object... values) {} // difference here
public void b() {
test(1, "y"); // accepted
}
세트 2 :
error: reference to test is ambiguous
test(1, "y"); // marked as ambiguous
^
both method test(Object...) in T and method test(int,Object...) in T match
자바 1.8, 이클립스 산소
Set 1과 Set 2의 메토는 같은 등급입니까? –
@RafaelVieiraCoelho 물론 아닙니다. – Kayaman
동일한 클래스. 클래스를 편집하여 둘 사이를 변경합니다. –