Null 인수를 사용한 메소드 오버로딩: 모호성 해결
Java의 메소드 오버로딩은 이름은 같지만 매개변수가 다른 여러 메소드를 허용합니다. 그러나 null 인수가 있는 메서드를 호출할 때 적용 가능한 메서드가 여러 개 있으면 컴파일러에서 모호성이 발생할 수 있습니다.
주어진 코드 조각에는 Object, char[] 및 매개 변수가 있는 세 가지 doSomething 메서드가 있습니다. 정수. doSomething(null)을 호출하면 모호한 메서드 오류가 발생합니다. 문제를 자세히 살펴보겠습니다.
모호성 해결
Java는 가장 구체적으로 적용 가능한 메소드 버전(JLS §15.12.2)을 우선시합니다. 세 가지 메소드 모두 null을 유효한 인수로 허용하므로 동일하게 적용할 수 있습니다.
Object 대 char[]
Object는 char[]의 상위 유형입니다. char[]는 Object보다 더 구체적입니다. 따라서 Object 및 char[] 메소드만 존재하는 경우 char[] 메소드가 선택됩니다.
Object vs. Integer
그러나 char [] 및 Integer 메서드가 존재하며 어느 쪽도 다른 쪽보다 더 구체적이지 않습니다. Java는 호출할 항목을 결정할 수 없으므로 모호성이 발생합니다.
해결 방법
모호성을 해결하려면 null 인수를 원하는 유형으로 명시적으로 캐스팅하세요.
doSomething((Integer) null);
이 경우 컴파일러는 doSomething(Integer obj)을 명시적으로 호출합니다.
실용적 관련성
null 인수의 모호성은 생각보다 덜 일반적입니다. 일반적으로 null을 사용하여 메서드를 명시적으로 호출하거나 지정되지 않은 유형(예: Object)의 변수를 사용할 때 발생합니다.
반대로 다음과 같이 변수를 메서드에 전달하는 경우:
char[] x = null; doSomething(x);
Java는 null 값 전달에도 불구하고 변수 유형에 따라 의도한 메소드를 올바르게 결정합니다.
위 내용은 Java는 Null 인수로 인한 메소드 오버로딩 모호성을 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!