나는이 발췌 문장을 우연히 발견했다.
public class ParamTest {
public static void printSum(int a, double b) {
System.out.println("In intDBL " + (a + b));
}
public static void printSum(long a, long b) {
System.out.println("In long " + (a + b));
}
public static void printSum(double a, long b) {
System.out.println("In doubleLONG " + (a + b));
}
public static void main(String[] args) {
printSum(1, 2);
}
}
컴파일 오류가 발생합니다.
오류 : (15, 9) java : printSum에 대한 참조가 ParamTest의 printSum (int, double) 메소드와 ParamTest 일치의 printSum (long, long) 메소드 모두 모호합니다.
이것은 어떻게 모호합니까? 이 경우 첫 번째 매개 변수가 이미 int이므로 두 번째 매개 변수 만 승격시켜야합니까? 이 경우 첫 번째 매개 변수를 승격시킬 필요가 없습니까?
다른 방법을 추가하기 위해 코드를 업데이트하면 컴파일이 성공합니다.
public static void printSum(int a, long b) {
System.out.println(String.format("%s, %s ", a, b));
}
명확히하기 위해 확장하겠습니다. 아래 코드는 애매 모호합니다.
public class ParamTest {
public static void printSum(int a, double b) {
System.out.println("In intDBL " + (a + b));
}
public static void printSum(long a, long b) {
System.out.println("In long " + (a + b));
}
public static void main(String[] args) {
printSum(1, 2);
}
}
그런 다음이 코드는 아래 도 모호한 결과 :
public class ParamTest {
public static void printSum(int a, double b) {
System.out.println("In intDBL " + (a + b));
}
public static void printSum(double a, long b) {
System.out.println("In doubleLONG " + (a + b));
}
public static void main(String[] args) {
printSum(1, 2);
}
}
그러나 이것은 모호성을 초래 하지 않습니다 .
public class ParamTest {
public static void printSum(int a, double b) {
System.out.println("In intDBL " + (a + b));
}
public static void printSum(long a, double b) {
System.out.println("In longDBL " + (a + b));
}
public static void main(String[] args) {
printSum(1, 2);
}
}
Error:(15, 9) java: reference to printSum is ambiguous both method printSum(int,double) in ParamTest and method printSum(long,long) in ParamTest match
.-모호한 메소드가 아니며 모호한 메소드에 대한 호출입니다.