почему я не получаю ссылку на метод неоднозначно в следующем коде? - PullRequest
0 голосов
/ 04 мая 2020

У меня есть базовый или родительский класс, у которого перегружены методы method1 (int, int) и method1 (double, double)

public class Sub extends Base{
    @overridden
    method1(double,double) {`some manipulation`}

    main{
       method1(1,1); //i am not getting Compile Error(reference to method is ambiguous)!in java
    }

} like so but what is the case here? publi c class Test3 {publi c stati c void JavaHungry (исключение e) {}

public static void JavaHungry(ArithmeticException e) {}

public static void JavaHungry(String s) {}

public static void main(String[] args) {

JavaHungry(null);`refernce to method is ambiguous`
}

}

1 Ответ

0 голосов
/ 04 мая 2020

В Java, int представлен 1, а double представлен 1.0.

Следовательно, когда вы вызываете method1(1, 1), он вызывает метод с аргументами int.

Для Java компилятора это не является неоднозначным.

Вкратце, ниже приведены вызовы, которые произойдут при передаче этих типов значений.

method1(1, 1) -> int, int

method1(1.0, 1) -> double, double (компилятор с автоматическим приведением 1 к double)

method1(1.0, 1.0) -> double, double

...