В настоящее время я рассматриваю экзамен OCA, и думал, что метод int / float будет работать для третьего теста.
В руководстве по изучению ОСА Джин Боярски говорит только 4 правила заказа, чтобы выбрать правильный перегруженный метод.
- Точное совпадение по типу
- Большой тип примитива
- Тип автобокса
- Varargs
Может кто-нибудь объяснить, почему Javaговорит, что это неоднозначно?
public static void main(String... args){
OverLoadingMethod ov=new OverLoadingMethod();
ov.test(1F,2);
ov.test(1,2F);
ov.test(1,2);
}
public void test(float i,int j){
System.out.println("float/int");
}
public void test(int i,float j){
System.out.println("int/float");
}
public void test(float i,float j){
System.out.println("float/float");
}
выдает эту ошибку
OverLoadingMethod.java:12: error: reference to test is ambiguous
ov.test(1,2);
^
both method test(float,int) in OverLoadingMethod and method test(int,float) in OverLoadingMethod match